我有一個 nginx 容器應該為燒瓶 gunicorn 容器提供服務,但"502 bad gateway"即使燒瓶 gunicorn 容器作業正常,我也會收到錯誤訊息。
你能幫我理解為什么會這樣嗎?(我試圖洗掉mynet網路,但它是一樣的)
這是我的 nginx.conf:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app:4000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20M;
}
}
這是我的 docker-compose.yml :
---
version: '3.7'
services:
nginx:
build:
context: .
dockerfile: ./nginx/Dockerfile
restart: always
ports:
- 80:80
depends_on:
- app
networks:
- mynet
app:
container_name: app
build:
context: .
dockerfile: ./app/Dockerfile
volumes:
- app:/app
ports:
- 4000:5000
networks:
- mynet
volumes:
app:
name: app
networks:
mynet:
和應用程式 dockerfile
FROM python:3.8-slim-buster
RUN apt-get update \
# dependencies for building Python packages
&& apt-get install -y build-essential netcat\
# cleaning up unused files
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*
RUN adduser --home /app --system --group kr1p
WORKDIR /app
COPY --chown=kr1p:kr1p app .
RUN pip install -r requirements.txt
USER kr1p
ENV PYTHONUNBUFFERED=1
CMD gunicorn
和 nginx Dockerfile:
FROM nginx:1.21.6-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY ./nginx/nginx.conf /etc/nginx/conf.d
CMD ["nginx", "-g", "daemon off;"]
uj5u.com熱心網友回復:
您不需要發布應用程式的埠。(除非您從docker 網路外部訪問它。)由于兩個容器共享網路,因此無需發布埠即可在該網路上訪問它們。這也意味著您應該在行程運行的埠上訪問它。
既然你有
ports:
- 4000:5000
對于應用程式,這意味著您的行程正在埠 5000 上運行。對嗎?如果是這樣,請嘗試在 nginx 中連接到它:
proxy_pass http://app:5000;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498028.html
