Недавно работаю с докером и выбрал я его потому что мне необходимо ставить один и тот же сайт на много серверов (это платформа). И сейчас я сделал так написал docker-compose файл в котором все необходимые контейнеры, а также же создал директории в которых хранятся конфиги (volumes), и основной файлик install.sh который при запуске устанавливает на сервере докер, генерит ssl сертификаты, и готовит окружение под dev или prod.
Сам вопрос: насколько уместно иметь такую архитектуру, с множеством директорий (10), инсталлятором, .env файлом, архивом который распаковывается и компилится (или в dev с гита код берется), нормально ли это? Я сделал так, потому что можно всё развернуть одной командой и прод готов.
И второй попутный вопрос: правильно ли что dev и prod работают на одном и том же контейнере? Задаю этот вопрос потому что инсталлер генерит либо реальный либо самоподписанный сертификат (в зависимости от того что стоит в .env), или лучше разбить это?
Troodi Larson, ну я вообще конкретно и отвечал на то, что вы подробно расписали. "файлик install.sh который при запуске устанавливает на сервере докер, генерит ssl сертификаты, и готовит окружение под dev или prod" - это всё замените на Ansible-плейбуки. Для докера и докер-композа есть уже готовая роль. Использование Ansible избавит вас от этого велосипеда. Причём он позволит прямо на всех серверах при необходимости вносить какие-то изменения, программы ставить/удалять и т.п. Одна команда - и куча продов готова.
То есть ответ на ваш вопрос "нормально ли это?": не особо.
"правильно ли что dev и prod работают на одном и том же контейнере" - вполне. В том и суть докера, что ваше дев-окружение должно быть таким же, как прод. Это гарантирует то, что если ваш проект в дев работает, то и в проде будет работать (т.к. образ тот же самый)
И второй попутный вопрос: правильно ли что dev и prod работают на одном и том же контейнере?
Вы имеете ввиду из того же докер образа? Так и надо делать. Чтобы тестировать и запускать в продакшене одно и тоже.
Енвайрнмент-зависимые вещи настраиваются извне и прокидываются (сертификаты, креденшелы для баз данных, и т.п.)
А так - если вас решение устраивает, если вам оно понятно и в случае чего вы его можете легко модифицировать как вам нужно - да, вполне нормально.