Я занимаюсь созданием веб-приложения Golang, которое взаимодействует с базой данных PostgreSQL, каждая из которых работает в своем собственном контейнере.Как подключить контейнер веб-приложений Docker к контейнеру Docker PostgreSQL?
Я бегу контейнеры с docker-compose up
Но я, кажется, терпит неудачу на получении Postgres контейнер правильно настроить.
Для краткости ссылки на Dockerfile
s и другие файлы настроек - on this gist (сообщите мне, если вы хотите это здесь).
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
работает нормально. Но когда приложение пытается открыть подключение к базе данных с:
var pgConf string = "user=web_app dbname=web_app sslmode=verify-full password=password"
db, err := sql.Open("postgres", pgConf)
Я получаю следующее сообщение об ошибке из Докер композе:
Error creating new user: dial tcp [::1]:5432: getsockopt: connection refused
Что я могу сделать, чтобы оба контейнера разговаривать друг с другом?
Заранее спасибо.
Причина заключается в том, что 'depends_on' не может заменить' links'. Первый определяет порядок запуска, в то время как последний также обеспечивает доступ между контейнерами по имени. –