如何解决连接到在 Docker 上运行的 Postgres 数据库时出错:“dial tcp: [...] no such host” 5432/tcp???
问题
$ 去运行 cmd/syndicate/main.go 2021/01/25 16:37:25 错误连接到数据库:拨号 tcp:查找数据库:没有这样的主机
尝试运行时无法连接到数据库:
$ go run cmd/syndicate/main.go
2021/01/25 16:37:25 error connecting to database: dial tcp: lookup db: no such host
&
$ migrate -source file://migrations -database postgres://postgres:secret@db:5432/syndicate?sslmode=disable up
error: dial tcp: lookup db on [2001:558:Feed::1]:53: no such host
这两个命令有什么共同点?... 数据库 URL。我几乎可以肯定我的数据库 URL 不正确。
我已验证我的 postgres 容器正在运行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e578bf646c7 adminer "entrypoint.sh docke…" 3 days ago Up 3 days 0.0.0.0:8080->8080/tcp syndicate_adminer_1
729fc179aa6f postgres "docker-entrypoint.s…" 3 days ago Up 3 days 5432/tcp syndicate_db_1
这里是我可能会忽略某些东西的地方...
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
syndicate_adminer_1 entrypoint.sh docker-PHP-e ... Up 0.0.0.0:8080->8080/tcp
syndicate_db_1 docker-entrypoint.sh postgres Up 5432/tcp
5432/tcp
???
我看到我的管理员容器清楚地映射到我的本地端口 (0.0.0.0:8080->8080/tcp
),但是我的 postgres 容器只显示 5432/tcp
(而不是 0.0.0.0:5432->5432/tcp
)
- 我是 docker 新手。谁能解释一下为什么我的 postgres 端口与我的本地端口没有关联?
- 我在正确的轨道上吗?
这是我的 docker-compose.yml:
version: "3.8"
services:
db:
image: postgres
environment:
POSTGRES_DB: $POSTGRES_DB
POSTGRES_USER: $POSTGRES_USER
POSTGRES_PASSWORD: $POSTGRES_PASSWORD
migrate:
image: migrate/migrate
volumes:
- ./migrations:/migrations
depends_on:
- db
command: -source=file://migrations -database postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@db:5432/$POSTGRES_DB?sslmode=disable up
adminer:
image: adminer
restart: always
ports:
- "8080:8080"
environment:
adminer_DEFAULT_SERVER: db
depends_on:
- db
- 附注。我尝试为
port: "5432:5432"
servicd 添加
db
变量
Browse my repository at this time in history
谢谢! 康纳
解决方法
添加到数据库服务
ports:
- "5432:5432"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。