我正在使用docker-compose.yml文件(Swarm堆栈部署)将2个容器(应用程序和SQL)部署到同一网络。 在大多数情况下,应用程序通过其主机名作为连接字符串中的数据源与SQL进行通讯时没有问题。
但是,有时根本找不到它。为了对其进行调试,我已经验证了确实在每个节点上都创建了覆盖网络,并且在检查每个节点上的网络时,我发现该容器确实属于该网络。
此外,当我运行docker exec
命令进入应用程序容器时,我尝试将ping发送到SQL容器,并且主机名的确解析为正确的IP,但是仍然没有响应。
这非常令人沮丧,因为它不时发生。 关于如何调试问题的任何建议?
version: '3.2'
services:
sqlserver:
image: xxxx:5000/sql_image
hostname: sqlserver
deploy:
endpoint_mode: dnsrr
networks:
devnetwork:
aliases:
- sqlserver
test:
image: xxxx:5000/test
deploy:
endpoint_mode: dnsrr
deploy:
restart_policy:
condition: none
resources:
reservations:
memory: 2048M
networks:
- devnetwork
networks:
devnetwork:
driver: overlay