Это кросс-пост от Форумы Docker в попытке получить ответ быстрее
Я работаю над настройкой Dockerized службы в моей компании, которая должна быть сбалансирована по нагрузке и за обратным прокси-сервером IIS (для разгрузки TLS и возможностей множественного размещения). Похоже, что сама служба работает нормально (я могу получить к ней доступ непосредственно со своего компьютера или через обратный прокси-сервер IIS другого сервера к серверу Swarm Manager). Проблема в том, что я не могу получить доступ к сервису от самого менеджера Swarm. Он работает на 0.0.0.0:8080
, и я пробовал localhost:8080
, 127.0.0.1:8080
и <server's static IP>:8080
безрезультатно.
Если я запускаю автономный контейнер, работающий microsoft/iis
с опубликованным портом, я могу получить к нему доступ, так что это, похоже, относится к Swarm.
Я прочитал, что опубликованные порты Swarm не были доступны на адаптере обратной связи до Windows Server 2019, но на этом компьютере установлена последняя сборка 2019 (Windows Server версии 1809, сборка 17763), поэтому у меня сложилось впечатление, что я должен быть в состоянии получить доступ к этой услуге по обратной связи. В идеале нам не нужно запускать IIS на отдельном сервере для обратного прокси-сервера для службы в контейнерах. Что дает?
Это файл docker-compose.yml
, который мы используем:
version: "3.7"
services:
api:
image: our.registry.server/ourimage:${OUR_IMAGE_VERSION:-latest}
ports:
- "8080:80"
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 5s
failure_action: rollback
monitor: 10s
rollback_config:
parallelism: 1
delay: 2s
failure_action: continue
monitor: 10s
restart_policy:
delay: 3s
max_attempts: 3
window: 45s
healthcheck:
test: curl -f http://localhost/healthcheck || exit 1
interval: 30s
timeout: 3s
retries: 3
start_period: 10s