Contenido del curso
Gestión de modelos en el backend con el ORM Diesel
- 2

Qué es un ORM y por qué usar Diesel
02:55 min - 3

Errores Comunes al Instalar y Usar Diesel en Rust
00:31 min - 4

Instala Diesel ORM en tu proyecto Rust
05:16 min - 5

Modelo Post con Diesel y PostgreSQL
14:22 min - 6

Cómo insertar datos en Diesel con Rust
07:55 min - 7

Queries SELECT con filtros en Diesel
08:16 min - 8

Cómo editar registros con Diesel en Rust
04:40 min - 9

Borrar registros en Diesel con filtros
03:01 min
Actix web framework (controlador)
Tera templates (vistas)
Despliegue del proyecto
Continúa tu aprendizaje
Dockerizar una app Rust para Heroku
Resumen
Llevar tu primera aplicación web en Rust a producción es más fácil cuando entiendes cómo dockerizar una aplicación Rust y subirla a Heroku. Aquí aprenderás a construir una imagen Docker optimizada con multi-stage build, configurar variables de entorno y dejar tu proyecto listo para desplegarse en la nube sin tarjeta de crédito.
Por qué usar Heroku para desplegar un proyecto Rust
Heroku es una opción gratuita que no exige tarjeta de crédito ni requisitos complicados, y ofrece bases de datos integradas que facilitan el despliegue. Si buscas alternativas, los tres grandes son Google Cloud Platform, AWS y Azure, pero Heroku gana por simplicidad cuando recién empiezas.
¿Qué significa dockerizar una aplicación? Es crear una imagen de Docker que empaqueta tu código, dependencias y entorno de ejecución en un contenedor portable. Esa imagen es la que subirás a Heroku para que tu app funcione igual en cualquier servidor.
Cómo escribir el Dockerfile para una app en Rust
El archivo Dockerfile va al mismo nivel que tu Cargo.toml, con la D en mayúscula. La estrategia es usar dos etapas: una para compilar y otra para ejecutar solo el binario final, lo que reduce muchísimo el peso de la imagen.
Qué incluye la primera etapa de compilación
La imagen base es Ubuntu 18.04. Sobre ella se actualizan dependencias e instalas paquetes esenciales como curl y certificados SSL. Después instalas Rust con el mismo comando con el que iniciaste tu travesía y agregas Rust al path del sistema [03:00].
Luego defines el directorio de trabajo con workdir app, copias todo el código fuente y ejecutas un cargo build en modo release. Este paso compila el proyecto y deja los binarios listos, pero sin correr la aplicación.
Cómo optimizar la imagen con multi-stage build
Como Rust es un lenguaje compilado, no necesitas arrastrar todo el código fuente a la imagen final. Solo importa el binario. Por eso creas una segunda imagen que repite la base de Ubuntu y los paquetes, define workdir app y copia únicamente lo necesario desde la primera etapa.
- COPY --from=0 para traer el archivo .env desde el contenedor anterior.
- COPY de target/release con el nombre de tu proyecto, por ejemplo blog Platzi.
- COPY de la carpeta templates desde tu máquina, ya que no cambia.
- CMD apuntando al binario final para ejecutar la app.
Cómo construir y correr la imagen Docker
Una vez listo el Dockerfile, construyes la imagen con docker build -t web:latest seguido de un punto, que indica que se trabaja sobre toda la carpeta actual [07:30]. La primera compilación tarda más porque genera todas las librerías desde cero.
Por qué necesitas un archivo dockerignore
Si no excluyes ciertos archivos, Docker subirá carpetas pesadas e innecesarias como target. La solución es crear un archivo dockerignore al mismo nivel del Dockerfile y agregar dos entradas:
- target, porque se regenera dentro del contenedor.
- Cargo.lock, ya que solo necesitas subir el Cargo.toml.
¿Para qué sirve dockerignore? Funciona como un gitignore pero para Docker: evita que archivos pesados o innecesarios se incluyan al construir la imagen, haciendo el build más rápido y la imagen más liviana.
Cómo manejar el puerto con variables de entorno
Dentro del archivo .env defines la variable port con el valor que prefieras. Desde main.rs traes esa variable de entorno y la parseas a un entero de 16 bits con esta línea: let port: u16 = port.parse().unwrap(). Así tu aplicación lee dinámicamente el puerto donde debe escuchar [11:45].
Para correr el contenedor usas docker run -d con el nombre del proyecto, el flag de debug y el binding del puerto del host al puerto del contenedor. Al ejecutarlo, Docker devuelve un hash identificador y tu servidor arranca en unos segundos.
Cómo verificar que el contenedor funciona correctamente
Después de lanzar docker run, el servidor tarda unos instantes en estar disponible. Si entras a localhost con el puerto que asignaste, por ejemplo el 8007, deberías ver tu blog funcionando exactamente igual que en desarrollo local [13:20].
Con la imagen construida y probada localmente, ya tienes todo lo necesario para el siguiente paso: usar el cliente de Heroku y publicar tu proyecto Rust en internet. ¿Qué nombre le pusiste a tu imagen Docker? Cuéntalo en los comentarios.