Попытка развернуть сервер django с помощью gunicorn, nginx и docker
Я пытаюсь следовать этому , но я нахожу некоторые проблемы.
Моя структура папок следующая:
— project
— config/nginx/conf.d
— www
— server
— settings.py, wsgi.py, etc.
— Dockerfile
— manage.py
— requirements.txt
— docker-compose.yml
— Dockerfile
Наиболее актуальными являются следующие файлы:
Dockerfile
FROM python:3
# Make the Python output not buffered; logs will show in real time
ENV PYTHONUNBUFFERED=1
WORKDIR /www
COPY requirements.txt /www/
RUN pip install -r requirements.txt
COPY . /www/
EXPOSE 80
CMD ["gunicorn", "--bind", ":80", "server.wsgi:application"]
docker-compose.yml
version: "3.9"
services:
web:
build: ./www
volumes:
- .:/web
nginx:
image: nginx:1.13
ports:
- 80:80
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
depends_on:
- web
networks:
- nginx_network
networks:
nginx_network:
driver: bridge
local.conf
upstream www {
server web:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
Вот что я получаю на выходе:
web_1 | [2021-10-28 14:44:43 +0000] [1] [INFO] Starting gunicorn 20.1.0
web_1 | [2021-10-28 14:44:43 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
web_1 | [2021-10-28 14:44:43 +0000] [1] [INFO] Using worker: sync
web_1 | [2021-10-28 14:44:43 +0000] [7] [INFO] Booting worker with pid: 7
nginx_1 | 2021/10/28 14:44:46 [emerg] 1#1: host not found in upstream "web:80" in /etc/nginx/conf.d/local.conf:3
nginx_1 | nginx: [emerg] host not found in upstream "web:80" in /etc/nginx/conf.d/local.conf:3
project_nginx_1 exited with code 1
Я думаю, что, возможно, я неправильно указываю имя сервера в local.conf
, здесь:
upstream www {
server web:80;
}
Но я пробовал www
, web
, server
и, кажется, еще несколько... Что не так?