gpt4 book ai didi

docker - Web 服务器重启后,Windows Server Docker 容器无法连接到代理容器

转载 作者:行者123 更新时间:2023-12-02 17:54:08 29 4
gpt4 key购买 nike

我有 2 个使用 Docker Compose 部署的 Windows Server Docker 容器。一个容器运行反向代理服务器,另一个容器运行 Web 服务器。 Web 服务器提供一个简单的 index.html 页面。两者都在运行 Nginx。
运行时,一切都按预期工作。我可以通过代理访问内容。但是,如果我重新启动 Web 服务器,则会收到错误的网关错误。然后我需要重新启动代理以使其再次工作。
如何在无需重新启动代理的情况下使其正常工作?
Docker-撰写:

version: '3'

services:
web:
build:
context: ./web
dockerfile: ./dockerfile
proxy:
build:
context: ./proxy
dockerfile: ./dockerfile
ports:
- "8089:80"
代理Dockerfile:
FROM sixeyed/nginx:windowsservercore

COPY nginx.conf C:/nginx/conf
CMD C:\nginx\nginx.exe
代理 nginx.config:
events {
}
http {
server {
listen 80;
server_name localhost;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://web:80/;
}
}
}
网络 Dockerfile:
FROM sixeyed/nginx:windowsservercore

COPY nginx.conf C:/nginx/conf
COPY index.html C:/nginx/html/index.html

CMD C:\nginx\nginx.exe
网页 nginx.config:
events {
}

http {
server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}
}
}

最佳答案

问题web proxy 中的引用容器的 nginx.conf 指的是启动 nginx 服务器时引用的容器的 up。当web重新启动旧 ip 变得不可用并使用新 ip,容器 web然后更新引用,但是 nginx 服务器仍在引用旧 IP,因为配置更改仅在启动/重启时应用。
解决方案
当您的 Web 容器被替换时,您需要重新启动 nginx 代理服务器(不一定是容器)。这可以通过使用 docker-gen 监视有关容器的元数据并在检测到更改时重新启动 nginx 来完成。幸运的是 nginx-proxy,为你做这件事。 nginx-proxy 维护得很好,是您必须自己维护此业务逻辑的替代方案。
引用
Nginx 代理:https://github.com/nginx-proxy/nginx-proxy

关于docker - Web 服务器重启后,Windows Server Docker 容器无法连接到代理容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64158264/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com