访问另一个docker容器中一个docker容器的本地主机端口



我想通过使用localhost:5432从service2容器内部访问service1。怎么才能做到呢?

这是我的docker组成目前的样子:

services:
service1:
image: postgres:12
ports:
- '172.10.1.1:5432:5432'
expose:
- '5432'
environment:
- POSTGRES_USER=project
- POSTGRES_PASSWORD=pass
volumes:
- db_data:/var/lib/postgresql/data
service2:
build: .
ports:
- '172.10.1.1:1234:1234'

请注意,我知道我可以通过使用service1:5432service1访问它。但如果可能的话,我想使用localhost

这是不可能的,因为每个容器都有自己的ip。

但是有一个解决方法:选择"network"为"host"。因此,端口在hostmaschine上是打开的,并且可以通过127.0.0.1访问。

但是我不知道你为什么喜欢用localhost为postgres的好理由?您正在尝试通过localhost进行身份验证吗?不要那样做,用密码代替。

使用主机网络可能是您正在寻找的解决方案https://docs.docker.com/network/host/

services:
service1:
image: postgres:12
network_mode: host
expose:
- '5432'
environment:
- POSTGRES_USER=project
- POSTGRES_PASSWORD=pass
volumes:
- db_data:/var/lib/postgresql/data
service2:
build: .
network_mode: host

相关内容

  • 没有找到相关文章

最新更新