我有一个带有docker-compose.yml配置的简单Web应用程序,如下所示:

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文件中,这似乎不起作用。

最佳答案

/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。

08-28 11:55