我有三个 Docker 容器(postgresql、adminer 和 go/migrate),已将 adminer 和 postgres 的端口暴露给主机。我可以在浏览器中访问 adminer,并且 postico 也可以连接到数据库。但当我尝试从 adminer 内部连接数据库时,它会抛出以下错误:
SQLSTATE[08006] [7] could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP
connections on port 5432? could not connect to server: Address not available
Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?
迁移容器也会出现这个错误:
错误:拨号tcp:127.0.0.1:5432:连接被拒绝
因此,容器之间的通信存在问题。我需要创建一个Docker网络吗?
version: '3.1'
services:
db:
image: postgres
environment:
POSTGRES_DB: mydbname
POSTGRES_USER: mydbuser
POSTGRES_PASSWORD: mydbpwd
ports:
- "5432:5432"
migrate:
image: migrate/migrate
volumes:
- .:/migrations
command: ["-database", "postgres://mydbuser:mydbpwd@localhost:5432/mydbname?sslmode=disable", "-path", "/migrations", "up"]
links:
- db
adminer:
image: adminer
restart: always
ports:
- "8081:8080"
depends_on:
- db