django - django docker 无法访问 nginx 端口
问题描述
我正在对接一个Django 2.x应用程序
Dockerfile
FROM python:3-alpine
RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc curl
RUN apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev postgresql-dev
RUN apk add --no-cache bash
ENV PYTHONUNBUFFERED 1
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
RUN set -ex && mkdir /app
COPY Pipfile /app
COPY Pipfile.lock /app
WORKDIR /app
RUN pip install pipenv
RUN pipenv install --system --deploy
ADD . /app/
RUN chmod +x start.sh
RUN chmod +x wait-for-it.sh
EXPOSE 9010
码头工人-compose.yml
version: '3'
services:
nginx:
image: nginx:alpine
container_name: "originor-nginx"
ports:
- "10080:9010"
- "10443:43"
volumes:
- .:/app
- ./config/nginx:/etc/nginx/conf.d
- ./app/static_cdn/static_root:/app/static_cdn/static_root
- originor_media_volume:/app/static_cdn/media_root
depends_on:
- web
networks:
- originor_web_network
web:
build: .
container_name: "originor-web"
command: ["./wait-for-it.sh", "db:5432", "--", "./start.sh"]
volumes:
- .:/app
- ./app/static_cdn/static_root:/app/static_cdn/static_root
- originor_media_volume:/app/static_cdn/media_root
ports:
- "9010:9010"
depends_on:
- db
networks:
- originor_web_network
- originor_db_network
db:
image: postgres:11
container_name: "originor-postgres-schema"
volumes:
- originor_database:/var/lib/postgresql/data
networks:
- originor_db_network
env_file:
- config/db/originor_database.env
ports:
- "5432:5432"
networks:
originor_web_network:
driver: bridge
originor_db_network:
driver: bridge
volumes:
originor_database:
originor_static_volume:
originor_media_volume:
nginx.conf
error_log /var/log/nginx/error.log;
include /etc/nginx/conf.d/proxy.conf;
upstream web {
ip_hash;
server web:9010 fail_timeout=0;
}
server {
listen 10080;
server_name localhost;
access_log /var/log/nginx/localhost.access.log combined;
location /static/ {
autoindex on;
alias /app/static_cdn/static_root/;
}
location /media/ {
alias /app/static_cdn/media_root/;
}
location / {
proxy_pass http://web/;
}
}
服务器使用 gunicorn 启动
gunicorn --pythonpath src originor.wsgi:application \
--bind 0.0.0.0:9010 \
--workers 3
因为,nginx 正在监听端口10080并且 Django 服务器正在9010上运行。
当我访问http://localhost:10080
时它不会加载而访问http://localhost:9010
是可访问的。
docker-compose
控制台中没有关于nginx
.
运行命令docker-compose logs nginx
只给出
附加到 originor-nginx
解决方案
location / {
proxy_pass http://web:10080/;
proxy_redirect off;
proxy_intercept_errors on;
proxy_next_upstream error timeout http_502 http_504;
}
推荐阅读
- c++ - 固定分配 std::vector
- python - 尝试仅使用 [HH:DD] 转换 Pandas 列,但返回 [YYYY-DD-MM HH:MM:SS]
- security - 如何在 Yesod 应用程序中向所有端点添加标头?
- mulesoft - 在 Mulesoft 中关闭注销
- python - 如何使用不同的列用 geopandas 绘制不同的颜色属性(色调、值、饱和度)?
- c# - 有没有办法在 Azure AD 中使用用户名和密码对 Graph API 进行身份验证而无需应用程序注册
- python-3.x - 如何使用for循环遍历两个列表来创建字典
- sql - 如果当前列值为空,则从下一行获取同一列的值
- android - 为什么将 FrameLayout 与 BottomNavigation 一起使用?
- javascript - 为什么 ChartJS 的条形图不呈现特定值的条形?