Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

498
Vistas
Docker-compose (y django): no se pueden obtener variables de entorno en los servicios

Estoy tratando de escribir una pequeña solución de implementación de docker (-compose) para una pequeña aplicación Django.

Actualmente, el archivo django-compose, denominado docker-compose.dev.yaml se parece a esto:

 version: "3" services: backend: build: context: ./backend dockerfile: Dockerfile command: python manage.py runserver 0.0.0.0:8000 ports: - 8000:8000 env_file: - dev.env

El archivo dev.env se ve así:

 DEBUG=1 SECRET_KEY=We9ZyuSKsP9Mgvsrt74gExF8baWbGL # not important that this leaks DJANGO_ALLOWED_HOSTS=localhost

Sin embargo, cuando Django intenta iniciarse, obtengo lo siguiente:

#11 0.634 PERMITIDOS_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")

#11 0.634 AttributeError: el objeto 'NoneType' no tiene el atributo 'split'

Básicamente, la variable de entorno devuelve None , lo que significa que las variables no llegan al contenedor.

Intenté, de acuerdo con los documentos , hacer esto:

 # ... environment: - DEBUG - SECRET_KEY - DJANGO_ALLOWED_HOSTS

Sin suerte.

¿Algunas ideas? El repositorio detrás del código es público, te invito a probar.

Mi entorno de prueba actual es el escritorio Docker en Windows 10.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Entonces, lo descubrí.

Resulta que esta línea en el Dockerfile para el backend:

 RUN python manage.py migrate

era el problema. No me di cuenta de que se ejecutó en tiempo de compilación, no en tiempo de ejecución, por lo que las variables de entorno no estaban disponibles.

¡Me mudé a un script llamado en tiempo de ejecución y no todo funciona!

backend/Dockerfile :

 # ... # Make files executable RUN chmod +x start.dev.sh

backend/start.dev.sh :

 #!/bin/bash python manage.py migrate python manage.py runserver 0.0.0.0:8000

Y ./docker-compose.dev.yaml :

 # ... command: ./start.dev.sh # ...
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda