Docker暴露链接到主机

我正在为应用程序服务和数据库服务使用docker-compose.yml文件:

version: '2' services: app-service: image: app-image container_name: app-container ports: - "5000:5000" networks: - my-network links: - db-service db-service: image: db-image container_name: db-container ports: - "5432:5432" networks: - my-network networks: my-network: driver: bridge 

应用程序服务使用以db-service作为主机的连接string连接到数据库:

 "User ID=postgres;Password=password;Host=db-service;Port=5432;Database=my-table;Pooling=true;" 

这对正在运行的应用程序容器工作正常,但我也需要访问数据库使用来自我的主机相同的连接string。 (用于开发期间的数据库迁移)

  • 我想添加一个路由到我的主机:
    db-service – > localhost但是这不是一个好的解决scheme,因为它取决于主机操作系统。

  • 我试图在连接string中使用本地主机 ,因为我的主机然后连接到数据库容器。 但显然,应用程序容器将不再连接。

  • 我也在合成文件中使用network_mode设置和networking驱动程序 ,但没有运气。

如何在容器中使用与主机相同的主机名?

你可以使用相同的连接string为您的应用程序服务和您的主机的唯一方法是更新您的主机的/etc/hosts文件:

 127.0.0.1 db-service 

(或使用你的如果你在Docker机器上运行)

但是这个解决scheme可能不是最干净的。 最好的一个,国际海事组织,不要使用相同的连接string。