我在从堆栈中运行的 docker 容器内部连接到现有远程 MSSQL 数据库时遇到问题。
docker stack deploy -c docker-compose.yml myapp
服务器似乎配置正确,我可以通过 telnet 从容器访问主机。
当独立运行时(甚至从 docker 容器)后端应用程序能够毫无问题地连接到数据库,而与 docker-compose 堆叠但它无法连接到同一个数据库。
我还尝试提供数据库服务器 IP 而不是主机名 - 没有成功。
也许在 docker compose 中设置网络部分可以解决问题?
最佳答案
更新
您可以做的另一件事是使用 host.docker.internal
而不是数据库的IP地址。这个仅限 适用于 windows 的 docker 或 mac 的 docker。
来源:I want to connect from a container to a service on the host
OLD,仅在不处于集群模式时有效
您需要指定 docker 应该使用与主机相同的网络,您可以通过以下方式执行此操作:
version: '3'
services:
web-app:
build:
dockerfile: web-app/something
ports:
- 8080:8080
network_mode: "host"
引用:Use host networking
关于java - 无法从堆叠的 docker 容器连接到远程 MSSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50913335/