如何在两个Docker容器(mssql和.net核心应用)之间进行通信

时间:2018-12-19 14:08:32

标签: docker docker-compose

我有以下问题:我有以下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”}

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

1 个答案:

答案 0 :(得分:1)

您需要将两个服务都添加到一个公共网络中。

请重做此文档:Docker Networks

在您的每项服务中:

  networks:
   - sql-net

在撰写文件的末尾:

networks:
   sql-net:
     driver: bridge

然后,您将可以通过容器名称(my-special-db

)来连接到数据库

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

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

有些报告显示使用transparent驱动程序可能会起作用:

networks:
   sql-net:
     driver: transparent

编辑2-链接选项

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

web:
  links:
    - my-special-db