如何从 Windows 10 连接 Docker-Linux 上的 docker-compose Sql 服务器容器?

问题描述

我正在 Windows 10 内的 Linux 容器中使用 docker-compose 运行我的 web 应用程序和 sql server linux 实例。Docker-Compose 文件如下所示

version: "3.4"
services:
    nopcommerce_web:
        build: .
        container_name: nopcommerce
        tty: true
        ports:
            - "80:80"       
        depends_on:
            - nopcommerce_database
    nopcommerce_database:
        image: mcr.microsoft.com/mssql/server:2019-CU5-ubuntu-18.04
        container_name: nopcommerceDB
        ports:
            - "1433:1433"
        environment:
            SA_PASSWORD: "testpassword"
            ACCEPT_EULA: "Y"             

volumes:
  nopcommerce_data:

我可以简单地访问我的网站 http://localhost/。但是我无法使用 sql Server Management Studio 访问 sql server 数据库

如果我不使用 docker-compose 而只使用 docker 文件来创建容器。我可以简单地使用 127.0.0.1,1433

访问它

我什么都试过了。尝试使用我机器的 IP 地址和端口号等。但它不起作用。建议使用 docker-machine ip 命令获取容器的 ip 地址,但 Windows 不推荐使用 docker 工具。

有人可以在这里点亮一些灯吗?为什么我无法连接到 sql server 但我可以连接到 web 应用程序?

enter image description here

解决方法

我认为您可能需要在 docker-compose.yml 中添加以下内容:

expose:
 - 1433

否则,容器内外之间没有联系。