【发布时间】:2021-02-04 23:08:45
【问题描述】:
我在为 container (server) 容器配置 nginx.conf 时遇到问题。
- 不用 nginx:我可以通过 gunicorn 正常访问应用。
- 使用 nginx:我得到 502 Bad Gateway
我的第一个问题是,如果我有入口 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;
}
}
Command
# build
docker build -t test/server .
# run
docker run -p 80:80 test/server
我想我的问题是上游本地主机不工作。当我在本地开发时,我没有办法专门通过 docker 测试这个容器吗?还是我必须在本地使用 docker-compose 进行测试并将 nginx 放在单独的容器中?
【问题讨论】:
标签: docker nginx flask gunicorn