这是来自the Docker Forums的一个交叉帖子,旨在更快地做出响应
我正在为我的公司设置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特有的。
我了解到Windows Server 2019之前的环回适配器上不提供已发布的Swarm端口,但是该机器正在运行最新的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