在Docker中使用Unicorn Flask配置Nginx

在Docker中使用Unicorn Flask配置Nginx,docker,nginx,flask,gunicorn,Docker,Nginx,Flask,Gunicorn,我在为容器(服务器)容器配置nginx.conf时遇到问题 不使用nginx:我可以通过gunicorn正确访问应用程序 使用nginx:我得到了502个坏网关 我的第一个问题是,如果我有入口nginx,我甚至应该在容器(服务器)上有nginx吗 我的第二个问题是,为什么这个配置不起作用。这是容器(服务器)的docker文件 Dockerfile FROM python:3 as builder WORKDIR '/app' COPY requirements.txt ./ RUN pip

我在为容器(服务器)容器配置nginx.conf时遇到问题

  • 不使用nginx:我可以通过gunicorn正确访问应用程序
  • 使用nginx:我得到了502个坏网关

我的第一个问题是,如果我有入口nginx,我甚至应该在容器(服务器)上有nginx吗

我的第二个问题是,为什么这个配置不起作用。这是容器(服务器)的docker文件

Dockerfile

FROM python:3 as builder
WORKDIR '/app'
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
ENTRYPOINT [ "gunicorn", "-b", "0.0.0.0:8000", "run:app" ]

FROM nginx
EXPOSE 80
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
nginx.conf

upstream flask_server {
    server localhost:8000;
}

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://flask_server;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
命令

# build
docker build -t test/server .
# run
docker run -p 80:80 test/server
我想我的问题是上游本地主机不工作。当我在本地开发时,是否没有办法专门通过docker测试这个容器?或者我必须使用docker compose进行本地测试,并将nginx放在单独的容器中