0

我正在为应用程序服务和数据库服务使用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作为主机的连接字符串连接到数据库:

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

这在正在运行的应用程序容器上运行良好,但我还需要使用主机上的相同连接字符串访问数据库。(用于开发期间的数据库迁移)

  • 我考虑过为我的主机添加一条路由:
    db-service -> localhost但这不是一个好的解决方案,因为它取决于主机操作系统。

  • 我尝试在连接字符串中使用localhost,因为我的主机然后连接到数据库容器。但显然应用程序容器将不再连接。

  • 我还在撰写文件中使用了network_mode设置和网络驱动程序,但没有运气。

如何在容器中使用相同的主机名,就像在我的主机中一样?

4

1 回答 1

1

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

127.0.0.1 db-service

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

但是这个解决方案可能不是最干净的。IMO 最好不要使用相同的连接字符串。

于 2016-12-15T17:24:40.170 回答