Ich praktiziere die Erstellung einer Golang Web App, die mit einer PostgreSQL Datenbank interagiert, die jeweils auf ihrem eigenen Container läuft.Wie verbinde ich den Docker Web App Container mit dem Docker PostgreSQL Container?
Ich renne die Behälter mit docker-compose up
Aber ich scheine die Postgres Behälter versagt werden richtig eingerichtet bekommen.
Der Kürze halber sind Links zu Dockerfile
s und anderen Einstellungsdateien on this gist (lassen Sie mich wissen, wenn Sie es stattdessen hier wollen).
version: '2'
services:
web_app:
build: dockerfiles/web_app
ports:
- "9000:9000"
volumes:
- .:/go/src/gitlab.com/repo/web_app
# links might be replaced by depends_on.
# links:
# - db
depends_on:
- db
# tty and stdin_open cause docker-compose to disconnect from docker-machine after 60sec.
# A fix is on the way.
# tty: true
# stdin_open: true
db:
build: dockerfiles/db
volumes:
- data:/var/lib/postgresql/data
volumes:
data: {}
docker-compose up
funktioniert gut. Aber wenn die Anwendung versucht, eine Datenbank-Verbindung zu öffnen mit:
var pgConf string = "user=web_app dbname=web_app sslmode=verify-full password=password"
db, err := sql.Open("postgres", pgConf)
Ich erhalte die folgende Fehlermeldung von Docker compose:
Error creating new user: dial tcp [::1]:5432: getsockopt: connection refused
Was kann ich tun, beiden Behälter miteinander reden zu machen?
Vielen Dank im Voraus.
Der Grund dafür ist, dass '' depends_on' nicht links' ersetzen kann. Ersteres bestimmt nur die Reihenfolge des Starts, während letzteres auch den Zugriff zwischen Containern nach Namen ermöglicht. –