Я развертываю 2 контейнера (приложение и SQL) в одной сети с помощью файла docker-compose.yml (развертывание стека Swarm).В большинстве случаев у приложения нет проблем с обращением к 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