Aprendé a desplegar una aplicación Python utilizando Docker Compose, NGINX y variables de entorno. Esta guía explica una arquitectura reproducible para servidores Ubuntu o Debian, con buenas prácticas de seguridad, validación y preparación para producción.
¿Qué vas a construir?
Al finalizar este tutorial tendrás una base preparada para desplegar una aplicación Python sobre un servidor Linux utilizando Docker.
La solución incluye:
- Docker Compose para orquestar los servicios.
- Un contenedor para la aplicación Python.
- NGINX como proxy inverso.
- Variables de entorno separadas del código.
- Procedimientos básicos de validación y mantenimiento.
Esta arquitectura puede adaptarse tanto a un Cloud Server de DonWeb Cloud como a cualquier servidor Ubuntu o Debian.
¿Cuándo conviene utilizar esta arquitectura?
Este enfoque resulta especialmente útil cuando:
- necesitás un despliegue repetible;
- querés evitar configuraciones manuales;
- administrás aplicaciones en servidores cloud;
- buscás una estructura fácil de mantener;
- necesitás documentar el proceso de despliegue.
Requisitos previos
Antes de comenzar asegurate de contar con:
- un servidor Ubuntu o Debian actualizado;
- acceso mediante SSH;
- un usuario con permisos
sudo; - Docker Engine y Docker Compose instalados;
- una copia de seguridad si el servidor ya se encuentra en producción;
- un dominio o subdominio (opcional, pero recomendado para servicios web).
Arquitectura propuesta
El flujo recomendado consiste en:
- Preparar el servidor.
- Crear la estructura del proyecto.
- Configurar Docker Compose.
- Definir las variables de entorno.
- Configurar NGINX.
- Levantar los servicios.
- Validar el funcionamiento.
- Aplicar medidas básicas de seguridad.
Realizar cada paso por separado facilita detectar errores y simplifica cualquier rollback.
Paso 1. Preparar el entorno
Creá el directorio donde residirá el proyecto.
mkdir app
cd appSi el servidor ya presta servicios, verificá previamente que exista una copia de seguridad y una ventana de mantenimiento.
Paso 2. Iniciar los contenedores
Una vez creada la estructura del proyecto, iniciá los servicios definidos en Docker Compose.
docker compose up -d --buildEl parámetro --build fuerza la reconstrucción de las imágenes cuando existen cambios en el código fuente.
Verificar el estado de los servicios
Comprobá que todos los contenedores estén funcionando correctamente.
docker compose psSi alguno aparece detenido, consultá los registros antes de continuar.
docker compose logs --tail=80 apiProbar el proxy NGINX
Podés comprobar rápidamente que el proxy responde utilizando:
curl -I http://localhostUna respuesta HTTP válida indica que NGINX se encuentra operativo.
Configuración base de Docker Compose
Una configuración mínima puede tener la siguiente estructura:
services:
api:
build: ./api
env_file: .env
proxy:
image: nginx:stable
ports:
- "80:80"En producción será recomendable agregar redes, volúmenes persistentes y políticas de reinicio.
Buenas prácticas
Para un entorno productivo conviene seguir algunas recomendaciones:
- mantener las variables sensibles fuera del repositorio;
- utilizar imágenes oficiales y actualizadas;
- versionar toda la configuración;
- configurar reinicio automático de los servicios;
- monitorear logs y consumo de recursos;
- realizar copias de seguridad periódicas;
- probar las restauraciones antes de necesitarlas.
Consideraciones de seguridad
Antes de exponer la aplicación a Internet:
- verificá la configuración del firewall;
- limitá los permisos de las credenciales utilizadas;
- protegé los secretos mediante variables de entorno o gestores dedicados;
- mantené Docker y el sistema operativo actualizados;
- utilizá HTTPS cuando el servicio sea accesible públicamente.
Conclusión
Docker Compose y NGINX permiten construir una plataforma de despliegue simple, mantenible y reproducible para aplicaciones Python. Separar la configuración del código, automatizar la creación de contenedores y documentar cada paso facilita tanto el mantenimiento cotidiano como futuras migraciones o escalados.
Esta arquitectura constituye una excelente base para comenzar a ejecutar aplicaciones Python en servidores cloud de forma ordenada y preparada para crecer.
Sigue el paso a paso visual aqui :




