【发布时间】:2016-07-14 14:29:19
【问题描述】:
我正在练习制作一个与 PostgreSQL 数据库交互的 Golang Web 应用程序,每个应用程序都在自己的容器上运行。
我正在使用docker-compose up 运行容器
但我似乎无法正确设置 postgres 容器。
为简洁起见,指向Dockerfiles 和其他设置文件的链接为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)
我从 docker compose 收到以下错误:
Error creating new user: dial tcp [::1]:5432: getsockopt: connection refused
如何让两个容器相互通信?
提前谢谢你。
【问题讨论】:
-
原因是
depends_on不能代替links。前者只决定启动的顺序,而后者也允许容器之间通过名称访问。
标签: postgresql go docker docker-compose