不确定这是否是Docker for Mac,我的Postgres安装(通过Homebrew或其他一些奇怪的本地问题)出现的问题。
可能值得一提的是,我从未在Linux上遇到过此问题。
这是我的docker-compose.yml
文件中使用postgres
图片的摘录:
services:
postgres:
image: postgres
environment:
- POSTGRES_DB=some_db
- POSTGRES_USER=some_user
- POSTGRES_PASSWORD=supersecretpassword
ports:
- 5432:5432
启动撰写服务docker-compose up
之后,我可以看到我的postgres容器正在运行(docker ps
)。
我也可以直接通过docker exec
docker exec -it <container_id> psql -d some_db -U some_user
到目前为止一切正常……
但是,当我尝试通过本地psql客户端连接到Docker postgres实例时:
psql -h localhost -p 5432 -U some_user -d some_db
它没有连接到postgres的Docker实例,而是试图使用我的本地postgres实例。
现在奇怪的部分...
当我更改docker-compose.yml
中的端口绑定时
来自5432:5432
到5433:5432
(5433可以是任何开放端口)
我能够通过本地psql客户端按预期连接到Docker postgres实例:
psql -h localhost -p 5433 -U some_user -d some_db
# After being prompted for my password I'm in!
我不介意绑定到其他端口,但是我仍然很好奇这里发生了什么!
任何人都知道发生了什么事吗?
谢谢!