如何在ConnectionString中引用Docker容器
我有两个docker映像,一个用于后端,另一个用于模拟数据库。我想分别旋转这两个图像,并将后端链接到数据库。为此,我在后端有一个连接字符串,如so如何在ConnectionString中引用Docker容器,docker,docker-machine,Docker,Docker Machine,我有两个docker映像,一个用于后端,另一个用于模拟数据库。我想分别旋转这两个图像,并将后端链接到数据库。为此,我在后端有一个连接字符串,如sodatasource=192.168.99.100;目录=数据库名称;综合安全=真实;MultipleActiveResultSets=True";where192.168.99.100是运行数据库容器的默认Docker机器的IP。因此,在我的Windows机器上,这一点非常有效,后端容器可以与另一个容器上运行的数据库通信。然而,当我的一些使用Mac和
datasource=192.168.99.100;目录=数据库名称;综合安全=真实;MultipleActiveResultSets=True";
where192.168.99.100
是运行数据库容器的默认Docker机器的IP。因此,在我的Windows机器上,这一点非常有效,后端容器可以与另一个容器上运行的数据库通信。然而,当我的一些使用Mac和Linux的同事使用相同的映像时,他们无法获得链接,因为他们的Docker机器显然没有相同的IP
有没有办法在连接字符串中引用数据库,使其无论在何处运行都是相同的?例如,使用数据库容器的名称,而不是IP或类似的名称?您可以使用
docker compose
服务来实现您所寻找的内容。下面是一个简化的docker-compose.yml文件示例:
version: "3.5"
services:
db:
container_name: mock_db
restart: "no"
build: ./mock_db
expose:
- 5432 (or whatever your port is)
env_file: .env
command: your-command
server:
container_name: my_server
build: ./server
env_file: .env
ports:
- "8443:8443"
command: your-command
然后,您可以引用服务名称(在本例中为db
)作为连接字符串的ip/url部分
您可以阅读有关
docker compose
配置选项的更多信息您可以使用docker compose
服务来实现所需的功能。下面是一个简化的docker-compose.yml文件示例:
version: "3.5"
services:
db:
container_name: mock_db
restart: "no"
build: ./mock_db
expose:
- 5432 (or whatever your port is)
env_file: .env
command: your-command
server:
container_name: my_server
build: ./server
env_file: .env
ports:
- "8443:8443"
command: your-command
然后,您可以引用服务名称(在本例中为db
)作为连接字符串的ip/url部分
您可以阅读有关docker compose的更多信息配置选项您也可以使用普通docker进行此操作。基本上,您只需要创建一个网桥网络,然后将两个容器都连接到它 例如: 然后在
myapp
容器内,您可以使用主机名mydb
引用数据库容器(与docker compose相同)。您仍然可以使用-p3000:3000
等将myapp
容器中的端口公开给主机
进一步阅读:您也可以使用普通docker完成此操作。基本上,您只需要创建一个网桥网络,然后将两个容器都连接到它 例如: 然后在
myapp
容器内,您可以使用主机名mydb
引用数据库容器(与docker compose相同)。您仍然可以使用-p3000:3000
等将myapp
容器中的端口公开给主机
进一步阅读: