Pasé algunas horas investigando este problema y obtuve una solución. Docker depends_on
simplemente considere el inicio del servicio para ejecutar otro servicio. Entonces sucede porque tan pronto como db
se inicia, la aplicación de servicio intenta conectarse a su db
, pero no está listo para recibir conexiones. Entonces puedes verificar db
estado de salud en el servicio de la aplicación para esperar la conexión. Aquí está mi solución, resolvió mi problema. :)Importante:estoy usando docker-compose versión 2.1.
version: '2.1'
services:
my-app:
build: .
command: su -c "python manage.py runserver 0.0.0.0:8000"
ports:
- "8000:8000"
depends_on:
db:
condition: service_healthy
links:
- db
volumes:
- .:/app_directory
db:
image: postgres:10.5
ports:
- "5432:5432"
volumes:
- database:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
volumes:
database:
En este caso no es necesario crear un archivo .sh. Espero que les ayude;)cya