Тестовый Docker Compose затронул production: как разделить проекты
Две копии Compose запускаются на одном Docker-хосте и неожиданно используют общие ресурсы. Разные каталоги или файлы не всегда означают надёжную изоляцию. Нужно явно понимать имена проектов, внешние ресурсы и опубликованные порты.
Как разобрать ситуацию
Project name участвует в группировке ресурсов Compose. Для теста и production задайте различимые имена и проверьте итоговые зависимости. При этом вручную заданные имена контейнеров, внешние сети и явно общие volumes могут обойти ожидаемое разделение. Имя проекта также не создаёт отдельный физический сервер и не ограничивает ресурсное влияние соседних процессов.
Пример и ожидаемый результат
Учебные проекты training-test и training-prod имеют одинаковые сервисы api и db. Отдельные имена помогают различать созданные Compose ресурсы, но опубликованный порт 8080 на одном хосте одновременно занять обоим не удастся.
docker compose ls
docker compose -p training-test config --servicesОжидаемый результат — понятные независимые списки ресурсов двух проектов и отсутствие случайных общих записей. Диагностика начинается с описания проектов и итоговой конфигурации, а не с удаления чужих контейнеров.
Проверка перед применением
- Проверьте наличие container_name и внешних сетей или томов: они требуют отдельного решения.
- Согласуйте разные host-порты либо отдельные маршруты прокси.
- Убедитесь, что test не получил credential рабочей базы, даже если контейнеры называются по-разному.
Перед любым массовым действием в скрипте выпуска выводите выбранный проект и целевое окружение безопасным способом. Если оператор видит только короткое api, ошибка контекста становится слишком лёгкой. Для восстановления храните карту внешних ресурсов отдельно: Compose не обязан владеть всем, к чему подключается приложение.
Границы решения
Project name не является полноценной границей безопасности. Общий Docker daemon и хост остаются общими. Здесь приведены команды чтения; запуск, остановка и удаление проектов не выполнялись.
Если требуется самостоятельно собирать образ, связывать сервисы и разбирать поломки окружения, посмотрите программу нашего платного курса
Docker и Docker Compose: контейнеризация приложений. Перед записью сравните программу со своей задачей и подготовкой.
Техническая справка: docs.docker.com: документация.
Следующий шаг: Docker для разработчика: разборы запуска и хранения данных. По смежным вопросам: Docker каждый раз заново ставит зависимости: как проверить порядок COPY, Переменная окружения в Docker Compose не обновилась: где искать значение.
