我有一个具有docker-compose.yml
配置的简单网络应用,如下所示:
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "5432:5432"
我可以使用postgres://db:5432
访问Web应用程序容器中的数据库服务,因为两个容器共享网络。
我想使用postgres://db:5432
从主机访问数据库服务。如何将db:5432
主机从容器映射到本地主机上的db:5432
?我尝试将127.0.0.1:5432 db:5432
添加到我的/etc/hosts
文件中,但这似乎无效。
答案 0 :(得分:4)
/etc/hosts
文件只是在不存在或没有DNS服务器的情况下静态解析名称的一种方法。它无法映射端口地址。
参考:https://serverfault.com/questions/54357/can-i-specify-a-port-in-an-entry-in-my-etc-hosts-on-os-x
如果您这样做,它将起作用,
127.0.0.1 db
删除端口,它将起作用。
此外,您可以使用localhost: 5432
从主机直接访问Postgres。