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。