[英]Cannot connect to remote MSSQL database from stacked docker container
我在从堆栈中运行的 docker 容器内部连接到现有的远程 MSSQL 数据库时遇到问题。
我使用以下命令启动堆栈:
docker stack deploy -c docker-compose.yml myapp
结果是,所有容器都启动并运行,但 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.