На подобные вопросы обычно нет однозначного ответа. Это сильно зависит от вашей компании, вашей команды, используемых инструментов, стека программного обеспечения и т. Д. Лучшее, что можно сделать, - это опираться на ресурсы старшего разработчика и старшее техническое руководство в вашей организации, чтобы помочь сформировать ответы на вопросы. вопросы, подобные этим.
Примите следующие ответы с бункером соли, так как невозможно ответить на подобные вопросы окончательно.
1) Зависит от того, что наиболее удобно для разработчиков и какой язык вы используете. Некоторые разработчики считают, что рабочий процесс для всех контейнеров удобен, а некоторые разработчики могут быстрее выполнять итерации с помощью существующего рабочего процесса IDE / CLI и проверять последние запущенные образы контейнеров.
В большинстве случаев вы хотите, чтобы инструменты CI / CD позаботились о сборках, предназначенных для производства.
2) Да. Для этого вы можете использовать тегирование контейнера.
3) Запуск баз данных в контейнерах возможен, но если ваша команда не имеет опыта работы с контейнерами и оркестровкой контейнеров, я бы оставил базы данных на традиционных голых или виртуальных машинах.
Контейнеры - это необычная оболочка для одного процесса linux. Как правило, практическое правило - это один контейнер для одного процесса. Вы не должны объединять несколько вещей в одном контейнере. (Эта история немного усложняется, когда вы переходите на что-то вроде Red Hat OpenShift или Kubernetes, поскольку обсуждение вращается вокруг количества контейнеров на стручок).