MacOS 上的 Docker,无法将 Postgres 绑定到端口 5432

问题描述 投票:0回答:1

不确定这是否是 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!

我不介意绑定到不同的端口,但我仍然很好奇这里发生了什么!

有人知道发生了什么事吗?

  • 我只是无法绑定到端口 5432 吗?
  • 这是 Docker for Mac 的东西吗?
  • 我安装Postgres的方式有问题吗?

谢谢!

postgresql macos docker docker-compose
1个回答
0
投票

刚刚被同样的问题绊倒了。我有一个由“brew”运行的 postgres 实例。

在 mac 上查找运行在端口上的进程:

sudo lsof -i :5432

然后我跑了

brew services stop postgresql@14

还有中提琴!港口是免费的...

© www.soinside.com 2019 - 2024. All rights reserved.