Я пытаюсь запустить django + gunicorn + nginx, используя docker-compose
.
django и gunicorn теперь работают правильно и отвечают на запрос, но, когда я пытаюсь получить доступ к проекту в nginx (порт 80), он не может найти местоположение моего проекта.
следующие nginx Dockerfile
и nginx.conf
:
FROM nginx:1.17.4-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/
и nginx.conf
:
upstream back {
# in docker-compose.yml file, (django+gunicorn) service name is `backend` and is listening on port 8000.
server backend:8000;
}
server {
listen 80;
location /backend {
proxy_pass http://back;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
Теперь Gunicorn слушает на порт 8000 и ответы на запросы. если я go до 127.0.0.1
, я вижу nginx страницу по умолчанию. Но если я go до 127.0.0.1/backend/
, nginx покажет мне 404 страницы.
в docker -составлении журналов он показывает мне следующую строку:
[error] 6#6: *1 open() "/usr/share/nginx/html/backend" failed (2: No such file or directory), client: 192.168.176.1, server: localhost, request: "GET /backend HTTP/1.1", host: "127.0.0.1" <br>
Кажется, nginx ищет /backend
в своих папках в usr/share
и не делает передать запрос на порт 8000. Как я могу решить эту проблему?
ОБНОВЛЕНИЕ
это docker-compose.yml
файл:
version: '3'
services:
db:
...
redis:
...
backend:
hostname: backend
depends_on:
- db
- redis
volumes:
- ./backend/app/:/opt/
build:
context: .
dockerfile: ./backend/Dockerfile
working_dir: /opt/app/project
command: gunicorn config.wsgi:application --bind 0.0.0.0:8000
env_file:
- ./backend/.env
ports:
- 8000:8000
nginx:
image: nginx
build:
context: .
dockerfile: ./nginx/Dockerfile
ports:
- 80:80
depends_on:
- backend