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:

  1. Preparar el servidor.
  2. Crear la estructura del proyecto.
  3. Configurar Docker Compose.
  4. Definir las variables de entorno.
  5. Configurar NGINX.
  6. Levantar los servicios.
  7. Validar el funcionamiento.
  8. 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 app

Si 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 --build

El 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 ps

Si alguno aparece detenido, consultá los registros antes de continuar.

docker compose logs --tail=80 api

Probar el proxy NGINX

Podés comprobar rápidamente que el proxy responde utilizando:

curl -I http://localhost

Una 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 :

Cloud Serversby Donweb

Todo el poder de la nube a tus proyectos y aplicaciones.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Descubre la mejor solución de Cloud Hosting