Diese Antwort gilt für Docker-Compose Version 2 und funktioniert auch für Version 3
Sie können weiterhin auf die Daten zugreifen, wenn Sie abhängige_on verwenden.
Wenn Sie sich die Docker-Dokumente Docker Compose und Django ansehen , können Sie weiterhin wie folgt auf die Datenbank zugreifen:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Was ist der Unterschied zwischen Links und Depends_on?
Links:
Wenn Sie einen Container für eine Datenbank erstellen, zum Beispiel:
docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql
docker inspect d54cf8a0fb98 |grep HostPort
Und Sie können finden
"HostPort": "32777"
Dies bedeutet, dass Sie die Datenbank von Ihrem lokalen Host-Port 32777 (3306 im Container) aus verbinden können. Dieser Port ändert sich jedoch jedes Mal, wenn Sie den Container neu starten oder entfernen. Sie können also Links verwenden, um sicherzustellen, dass Sie immer eine Verbindung zur Datenbank herstellen und nicht wissen müssen, um welchen Port es sich handelt.
web:
links:
- db
kommt drauf an:
Ich habe einen schönen Blog von Giorgio Ferraris Docker-compose.yml gefunden: von V1 bis V2
Wenn Docker-Compose V2-Dateien ausführt, wird automatisch ein Netzwerk zwischen allen in der Datei definierten Containern aufgebaut, und jeder Container kann sofort auf die anderen verweisen, indem nur die in der Datei docker-compose.yml definierten Namen verwendet werden.
Und
Wir brauchen also keine Links mehr. Links wurden verwendet, um eine Netzwerkkommunikation zwischen unserem Datenbankcontainer und unserem Webservercontainer zu starten. Dies wird jedoch bereits von Docker-Compose durchgeführt
Aktualisieren
Expressabhängigkeit zwischen Diensten, die zwei Auswirkungen hat:
docker-compose up
startet Dienste in Abhängigkeitsreihenfolge. Im folgenden Beispiel werden db und redis vor dem Web gestartet.
docker-compose up SERVICE
schließt automatisch die Abhängigkeiten von SERVICE ein. Im folgenden Beispiel erstellt und startet Docker-Compose-Up-Web auch DB und Redis.
Einfaches Beispiel:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
Hinweis: abhängige_on wartet nicht darauf, dass db und redis "bereit" sind, bevor sie das Web starten - nur bis sie gestartet wurden. Wenn Sie warten müssen, bis ein Dienst bereit ist, finden Sie unter Steuern der Startreihenfolge weitere Informationen zu diesem Problem und Strategien zur Lösung des Problems.
--link
Flag ist jetzt eine veraltete Legacy-Funktion von Docker. In der Dokumentation wird vorgeschlagen, dass Docker: Legacy-Container-Links möglicherweise entfernt werden . Es wird empfohlen, die Docker-Netzwerkfunktion oder die Docker-Erstellungsmethode nicht zu verwenden . Ich dachte, dies wäre für jeden hier hilfreich, der etwas über diese Funktion erfährt.