Назад | Перейти на главную страницу

Управление несколькими веб-сайтами с помощью Docker-compose

На ТАК был хороший ответ https://stackoverflow.com/questions/47849096/running-multiple-websites-docker-compose, но это работает только тогда, когда у вас есть такая структура, как

└───project
    │   docker-compose.yml
    │
    ├───reverseproxy
    │       Dockerfile
    │       nginx.conf
    │
    ├───website1.com
    │       Dockerfile
    │
    └───website2
            Dockerfile

(конечно, есть и другие вещи, кроме упомянутых, но это самые важные)

Но я думаю, что обычно структура другая (по крайней мере, она имеет смысл для меня, и я использую ее сейчас):

└───projects
    ├───website1.com
    │       docker-compose.yml
    │       Dockerfile
    │
    ├───website2
    │       docker-compose.yml
    │       Dockerfile
    │
    └───website3
            docker-compose.yml
            Dockerfile

Каждая из папок «веб-сайта» представляет собой отдельный репозиторий git. Каждый веб-сайт можно клонировать отдельно и запускать локально. Таким образом, для разработки website1.com вам не нужно клонировать все остальные 100 веб-сайтов, размещенных на том же сервере.

И вот вопрос - имея такую ​​структуру (которая хороша для локального тестирования \ разработки), как мне «объединить» / «слить» все сайты на рабочем сервере? Выглядит как наследство будет наиболее подходящим здесь, но есть сообщения выпуск для docker-compose, что делает его почти бесполезным без уродливых обходных путей ...

Я хочу добиться:

  1. Оставить возможность клонировать один сайт и запускать его локально \ для разработки
  2. Есть возможность запускать все сайты в "один клик" в продакшене.
  3. Есть возможность запускать что-то в «общем» контейнере (например, nginx reversproxy для маршрутизации и обработки HTTPS; также это может быть контейнерный SMTP-сервер для отправки электронной почты) в производстве