#docker #apache #nginx #docker-compose #gunicorn
Вопрос:
Я новичок в теме докеров и серверов, понемногу я учусь, но я столкнулся с проблемой, о которой я не вижу много информации, и в конце концов я прибегаю к расспросам.
У меня есть сервер, на котором есть Apache, и у меня развернуто несколько веб-сайтов (на PHP и R). Я создал приложение в Django, и я закрепил его с помощью Gunicorn и Nginx, и у меня возникли проблемы с развертыванием указанного приложения на сервере, но, поскольку я новичок, я даже не знаю, возможно ли иметь стек докеров с Nginx и Gunicorn на сервере, на котором установлен Apache…
Это докер-файл проекта Django:
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
COPY project /app
COPY entrypoint.sh /
ENTRYPOINT ["sh", "/entrypoint.sh"]
Это точка входа:
#!/bin/sh
python manage.py migrate --no-input
python manage.py collectstatic --no-input
gunicorn project.wsgi:application --bind 0.0.0.0:8000
Это файл докера Nginx:
FROM nginx:1.19.0-alpine
COPY default.conf /etc/nginx/conf.d/default.conf
Это файл по умолчанию.conf:
upstream django {
server django_gunicorn:8000;
}
server {
listen 8080;
location / {
proxy_pass http://django;
}
location /static/ {
alias /static/;
}
}
А это файл docker-compose:
version: '3.8'
services:
django_gunicorn:
volumes:
- static:/static
env_file:
- .env
build:
context: .
ports:
- "8000:8000"
nginx:
build: nginx
volumes:
- static:/static
ports:
- "8080:8080"
depends_on:
- django_gunicorn
volumes:
static:
Если я поднимаю стек на сервере, на котором нет Apache, это работает, проблема возникает, когда я пытаюсь сделать это на сервере, на котором есть Apache … Но я не понимаю, в чем проблема…
Я не знаю, может ли понадобиться дополнительная информация, если да, то извините, вы можете сказать мне, и я быстро добавлю ее.
Спасибо.
Комментарии:
1. Не проверяя вашу конфигурацию, у меня есть вопрос: у вас есть Apache (вероятно, прослушивающий порт 80 и, возможно, 443) на хосте. И на том же хосте у вас есть контейнер Docker, в котором работает Nginx, прослушивающий порт 8080 (на хосте). Это должно сработать. Когда вы все запускаете и на хосте переходите на localhost:8080 , что вы видите в качестве ответа? В чем заключается фактическая ошибка?
2. A не найден Запрошенный ресурс не был найден на этом сервере.