Исходные рабочие процессы обычно отличаются от компании к компании, но обычно я рекомендую один репо на сервис и несколько филиалов , так что вы можете легко объединить функции с master
(например: prod) ветвь из ваших feature
веток, которые могут быть выделены для среды.
Что касается статической конфигурации, я рекомендую создать универсальные, не относящиеся к среде образы контейнеров , которые выбирают все специфические для среды конфигурации из переменных среды при запуске и во время выполнения.
При отображении портов в контейнере вы всегда должны использовать одни и те же порты (например: строить свой образ с помощью 82
и 83
) и изменять их только тогда, когда вы expose
используете его для хоста во время состав.
Когда вы создаете свои образы докеров, вы можете использовать labels
, чтобы установить, какой из них является dev
, prod
ревизией этих изображений, чтобы вы могли легче ориентироваться на них с помощью imagename:label
При этом вы можете указать несколько составов докеров для каждой среды, создав следующие файлы:
докер-Compose dev
.yml :.
version: '3'
services:
web:
image: "webapp:dev"
ports:
- "8082:82"
- "8083:83"
environment:
- DEBUG=true
- ENVIRONMENT_NAME=dev
докер-Compose prod
.yml :.
version: '3'
services:
web:
image: "webapp:prod"
ports:
- "8182:82"
- "8183:83"
environment:
- DEBUG=false
- ENVIRONMENT_NAME=prod
С помощью этой конфигурации вы можете создавать свои сервисные композиции на основе одинаковых или похожих изображений, запустив docker-compose
:
# To start a DEV service composition
docker-compose up -f ./docker-compose.dev.yml
# To start a DEV service composition
docker-compose up -f ./docker-compose.prod.yml
Подробнее об этом: