繁体   English   中英

无法从堆叠式 docker 容器连接到远程 MSSQL 数据库

[英]Cannot connect to remote MSSQL database from stacked docker container

我在从堆栈中运行的 docker 容器内部连接到现有的远程 MSSQL 数据库时遇到问题。

  1. 我的应用程序由三个模块组成(后端、前端和 haproxy)
  2. 后端模块是用 Java 编写的(SpringBoot 应用程序),它也是需要连接远程 MSSQL 数据库的模块(远程是指放置在不同的服务器上,与 docker 部分分开)。
  3. 我有以下 docker compose 文件:

在此处输入图片说明

  1. 我使用以下命令启动堆栈:

     docker stack deploy -c docker-compose.yml myapp
  2. 结果是,所有容器都启动并运行,但 spring 应用程序报告与 DB 的连接超时:

在此处输入图片说明

服务器似乎配置正确,我可以通过 telnet 从容器访问主机。

当独立运行时(甚至从 docker 容器)后端应用程序能够毫无问题地连接到数据库,而与 docker-compose 堆叠在一起,但是它无法连接到完全相同的数据库。

我还尝试提供数据库服务器 IP 而不是主机名 - 没有成功。

也许在 docker compose 中设置网络部分可以解决问题?

更新

您可以做的另一件事是使用host.docker.internal而不是数据库的 IP 地址。 适用于 docker for windows 或 docker for mac。

来源: 我想从容器连接到主机上的服务

OLD,仅在非群模式时有效

您需要指定 docker 应使用与主机相同的网络,您可以通过以下方式执行此操作:

version: '3'
services:
  web-app:
    build:
      dockerfile: web-app/something
    ports:
       - 8080:8080
    network_mode: "host"

参考:使用主机网络

该问题似乎是由网络重叠引起的。

添加如下所示配置的网络,允许连接到我的远程数据库并隐藏我的端点:

networks:
    backend:
        ipam:
            driver: default
            config:
                - subnet: 192.168.40.0/26

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM