首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ConnectionString中引用Docker容器

问如何在ConnectionString中引用Docker容器
EN

Stack Overflow用户
提问于 2020-01-30 04:04:36
回答 2查看 798关注 0票数 1

我有2个docker图像,一个用于我的后端,一个用于模拟数据库。我想分别旋转这两个图像,并将后端链接到数据库。为此,我在后端有一个连接字符串,比如Data Source=192.168.99.100;Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";,其中192.168.99.100是运行数据库容器的默认Docker机器的IP。因此,在我的Windows机器上,这工作得很好,后端容器可以与运行在另一个容器上的数据库进行通信。然而,当我的一些使用Mac和Linux的同事使用相同的图像时,他们无法获得链接,因为他们的Docker机器显然没有相同的IP。

有没有办法在连接字符串中引用数据库,使其无论在哪里运行都是相同的?例如,使用数据库容器的名称,而不是IP或类似的东西?

EN

回答 2

Stack Overflow用户

发布于 2020-01-30 04:49:13

你也可以使用普通的docker来做这件事。基本上,您只需要创建一个桥接网络,然后将两个容器都连接到它。

例如:

代码语言:javascript
复制
docker network create --driver=bridge mynetwork
docker run --network=mynetwork --name mydb mydb:latest
docker run --network=mynetwork --name myapp myapp:latest

然后,在myapp容器中,您可以使用主机名mydb引用数据库容器(与docker-compose相同)。您仍然可以使用-p 3000:3000等将myapp容器中的端口公开给主机

进一步阅读:https://docs.docker.com/network/bridge/

票数 2
EN

Stack Overflow用户

发布于 2020-01-30 04:29:10

您可以使用docker-compose服务来实现您想要的功能。以下是一个简化的docker-compose.yml文件示例:

代码语言:javascript
复制
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配置选项here的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59974758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档