как настроить nginx, чтобы перенаправить прокси в несколько контейнеров, при этом каждый контейнер имеет свой собственный nginx сервер - PullRequest
2 голосов
/ 14 января 2020

Пожалуйста, прочитайте полный вопрос, прежде чем пометить как дубликат, потому что это не дубликат вопроса. У меня есть VPS, на котором я хочу развернуть несколько веб-приложений (для которых я уже читал сообщения, и они идеально подходят, когда у нас есть непосредственно субконтейнер). У меня вопрос другой. Я хочу управлять каждым веб-приложением, имеющим собственный nginx для маршрутизации к его поддоменам, а также некоторым веб-сайтом c, связанным с ними. У меня два docker сочинения. Моя сеть выглядит следующим образом. Образ.

Containers Network

Мой NGINX Реверсивный прокси-сервер должен отвечать за маршрутизацию доменов до соответствующего nginx контейнера. Это может быть возможно или нет, я не уверен (поэтому я попросил помочь). Если кто-то может дать лучшее понимание, что я открыт для предложений. Ниже моя конфигурация для nginx контейнера прокси и других веб-приложений docker код файла yaml. Я использовал NGINX PROXY

NGINX PROXY Docker Compose File

version: "3.7"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy

ВЕБ-ПРИЛОЖЕНИЕ 1 docker -compose.yml

version: "3.7"
networks:
  default:
    external:
      name: nginx-proxy
  yoda-network:
    driver: bridge
services:
    adminer:
        container_name: ${APP_NAME}_adminer
        image: adminer
        depends_on:
            - mysql
        expose:
            - 8080
        environment:
            VIRTUAL_HOST: yodaledger.com
            VIRTUAL_PORT: 8080
        networks:
            - yoda-network
    python:
        container_name: ${APP_NAME}_python
        image: python:3.6
        command: bash -c "pip3 install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
        volumes:
            - ${APP_PATH}var/www/api.yodaledger.com/yodaledger_backend:/app
            - ${APP_PATH}var/www/static.yodaledger.com:/app/static
        depends_on:
            - mysql
        working_dir: /app
        environment:
            - PYTHONUNBUFFERED=1
            - MYSQL_HOST=mysql
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
        networks:
            - yoda-network
   nginx:
        container_name: ${APP_NAME}_nginx
        image: nginx:alpine
        expose:
            - 443
            - 80
        volumes:
            - ${APP_PATH}var/www:/var/www
            - ${APP_PATH}var/log:/var/log/nginx
            - ${APP_PATH}var/ssl:/var/ssl
            - ${APP_PATH}etc/nginx:/etc/nginx
            - /tmp/${APP_NAME}/nginx:/tmp
        depends_on:
            - python
        environment:
            VIRTUAL_PORT: 443
            VIRTUAL_HOST: yodaledger.com,api.yodaledger.com,app.yodaledger.com,static.yodaledger.com
        networks:
            - yoda-network
            - default
   mysql:
        container_name: ${APP_NAME}_mysql
        image: mariadb:latest
        #ports:
        #    - "3306:3306"
        volumes:
            - ${APP_PATH}var/mysql:/var/lib/mysql
            - ${APP_PATH}etc/mysql:/etc/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - TZ=Europe/Paris
        networks:
            - yoda-network

ВЕБ-ПРИЛОЖЕНИЕ 2 Выглядит так же, как веб-приложение 1.

...