【问题标题】:How to communicate between two docker containers (mssql and .net core app)如何在两个 docker 容器(mssql 和 .net core app)之间进行通信
【发布时间】:2018-12-19 14:08:31
【问题描述】:

我有以下问题:我有以下 docker-compose 文件

version: "3"
services:
    web:
        build: .
        ports:
            - "8000:80"
        links:
            - my-special-db
        networks:
            - demo-net
    my-special-db:
        image: "microsoft/mssql-server-windows-developer"
        ports:
            - "1433:1433"
        environment:
            - ACCEPT_EULA=Y
            - sa_password=demo
        networks:
            - demo-net
networks:
        demo-net:
          driver: nat

在 appsettings.Docker.json 我有以下连接字符串: "ConnectionStrings": { "DefaultConnection": "Server=my-special-db;Database=ContosoUniversity3;Trusted_Connection=True;MultipleActiveResultSets=true" }

我也尝试过传递密码,但它不起作用。 我做错了什么?

【问题讨论】:

  • 请添加您在尝试连接时遇到的语句和错误。
  • 请将 YAML 和 JSON 文件也重新粘贴为代码块(SO 编辑器中有四个前导空格)。缩进很重要!

标签: docker docker-compose


【解决方案1】:

您需要在一个公共网络中添加这两种服务。

请重发此文档:Docker Networks

在您的每项服务中:

  networks:
   - sql-net

在撰写文件的末尾:

networks:
   sql-net:
     driver: bridge

然后您将能够通过其容器名称连接到数据库,在您的情况下为my-special-db

编辑 1 - windows 下的网络驱动程序

OP 报告的错误表明它正在运行 Windows 10。它有一个未解决的错误here

有报道称使用transparentdriver 可能有效:

networks:
   sql-net:
     driver: transparent

编辑 2 - 链接选项

您也可以尝试使用旧版Link feature。将此添加到 web 容器中:

web:
  links:
    - my-special-db

【讨论】:

  • 我刚刚尝试过,我收到以下错误:错误:在 v1 插件注册表中找不到插件桥:找不到插件
  • 我正在尝试使用 NAT 驱动程序,但我遇到了与数据库连接相同的问题
  • 你在 windows 10 下运行 Docker 吗?你有麻烦。见:github.com/docker/for-win/issues/1960
  • 如果您使用的是 Windows 10,请尝试设置 driver: transparent 。有报道说它可以工作。
  • 如果没有,可以尝试使用网络Links legacy feature进行容器间通信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2023-03-19
  • 1970-01-01
  • 2022-12-18
  • 2021-01-06
相关资源
最近更新 更多