作者:橘子火4 | 来源:互联网 | 2023-09-10 19:25
在开发环境下使用 Docker + Gunicorn + Nginx 来运行 Django,服务器启动后只能看到 Nginx 欢迎界面。
Dockerfile 如下:
django:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN groupadd -r django \
&& useradd -r -g django django
COPY ./requirements.txt /requirements.txt
RUN pip install --no-cache-dir -r /requirements.txt \
&& rm -rf /requirements.txt
COPY ./compose/django/gunicorn.sh /
RUN sed -i 's/\r//' /gunicorn.sh \
&& chmod +x /gunicorn.sh \
&& chown django /gunicorn.sh
COPY . /app
RUN chown -R django /app
RUN mkdir /static
RUN chown -R django /static
USER django
WORKDIR /app |
nginx:
1 2
| FROM nginx:latest
ADD nginx.conf /etc/nginx/sites-enabled/django_blog.conf |
gunicorn.sh
1 2 3
| #!/bin/sh
python /app/manage.py collectstatic --noinput
/usr/local/bin/gunicorn blogproject.wsgi -w 4 -b 127.0.0.1:8000 --chdir=/app |
nginx.conf 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server {
charset utf-8;
listen 80 default_server;
location /static {
alias /app/static;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000;
}
} |
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| version: '3'
services:
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile
command: /gunicorn.sh
nginx:
build: ./compose/nginx
depends_on:
- django
ports:
- "80:80" |
运行命令:
docker-compose build
docker-compose up
似乎是 Nginx 没有把请求转发给 Gunicorn?求指点!