Ich habe einige Stunden damit verbracht, dieses Problem zu untersuchen, und ich habe eine Lösung gefunden. Docker depends_on
Betrachten Sie einfach den Dienststart, um einen anderen Dienst auszuführen. Dann passiert es, weil sobald db
gestartet wird, versucht die Service-App, sich mit Ihrer db
zu verbinden , aber es ist nicht bereit, Verbindungen zu empfangen. Sie können also db
überprüfen Integritätsstatus im App-Dienst, um auf die Verbindung zu warten. Hier ist meine Lösung, sie hat mein Problem gelöst. :)Wichtig:Ich verwende Docker-Compose Version 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:
In diesem Fall ist es nicht notwendig, eine .sh-Datei zu erstellen. Ich hoffe, es hilft euch;)cya