Публикация двух сайтов с помощью обратного прокси Django/Docker/Nginx?

Как я могу опубликовать два разных проекта Django с двумя доменами на одном хосте с помощью Docker в моем DigitalOcean Droplet? Должен ли я установить Nginx в файле docker-compose.yml, или я должен установить его в системе хоста (etc/nginx/...)? Или я должен запустить nginx в отдельном контейнере?

Когда я искал в интернете, люди, публикующие проекты django с помощью docker, обычно пишут настройки nginx в файле docker-compase.yml, но я не мог понять, как настроить обратный прокси таким образом для публикации двух разных сайтов.

Настройки Nginx - Dockerfile, docker-compose.yml Буду очень признателен, если вы предоставите информацию о настройках. Заранее спасибо.

Простите за мой плохой английский :( :(

docker-compose.yml

version: '3'

services:

  djangoapp:
    build: .
    volumes:
      - .:/opt/services/djangoapp/src
      - static_volume:/opt/services/djangoapp/static
      - media_volume:/opt/services/djangoapp/media
    networks:
      - nginx_network
      - database1_network
    depends_on:
      - database1

  nginx:
    image: nginx
    ports:
      - 8000:80      
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - static_volume:/opt/services/djangoapp/static
      - media_volume:/opt/services/djangoapp/media
    depends_on:
      - djangoapp
    networks:
      - nginx_network

  database1:
    image: postgres
    env_file:
      - config/db/database1_env
    networks:
      - database1_network
    volumes:
      - database1_volume:/var/lib/postgresql/data

networks:
  nginx_network:
    driver: bridge
  database1_network:
    driver: bridge

volumes:
  database1_volume:
  static_volume:
  media_volume:

Nginx - local.conf

upstream hello_server {
    server djangoapp:8000;
}

server {

    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://hello_server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8000;
    }

    location /static/ {
        alias /opt/services/djangoapp/static/;
    }

    location /media/ {
        alias /opt/services/djangoapp/media/;
    }
}

Dockerfile

FROM python:3.8


RUN mkdir -p /opt/services/djangoapp/src
WORKDIR /opt/services/djangoapp/src


COPY Pipfile Pipfile.lock /opt/services/djangoapp/src/

RUN pip install pipenv && pip install --upgrade pip && pipenv install --system
RUN pip install django-ckeditor


RUN pip install Pipfile

COPY . /opt/services/djangoapp/src

EXPOSE 8000

CMD ["gunicorn", "--chdir", "hello", "--bind", ":8000", "hello.wsgi:application"]
Вернуться на верх