Развертывание стека докеров с помощью Nginx и Gunicorn на сервере с Apache

#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:
 

Что выкидывает докер ps:
введите описание изображения здесь

Если я поднимаю стек на сервере, на котором нет Apache, это работает, проблема возникает, когда я пытаюсь сделать это на сервере, на котором есть Apache … Но я не понимаю, в чем проблема…

Я не знаю, может ли понадобиться дополнительная информация, если да, то извините, вы можете сказать мне, и я быстро добавлю ее.

Спасибо.

Комментарии:

1. Не проверяя вашу конфигурацию, у меня есть вопрос: у вас есть Apache (вероятно, прослушивающий порт 80 и, возможно, 443) на хосте. И на том же хосте у вас есть контейнер Docker, в котором работает Nginx, прослушивающий порт 8080 (на хосте). Это должно сработать. Когда вы все запускаете и на хосте переходите на localhost:8080 , что вы видите в качестве ответа? В чем заключается фактическая ошибка?

2. A не найден Запрошенный ресурс не был найден на этом сервере.