У меня есть несколько репозиториев, которые все зависят от общей инфраструктуры.Поэтому есть docker-compose.infrastructure.yml
, который раскручивает все эти зависимости.
Пример:
version: '3.5'
services:
seq:
image: datalust/seq:latest
container_name: seq
ports:
- "5341:80"
environment:
- ACCEPT_EULA=Y
networks:
- my-network
couchbase:
build:
context: ./docker-compose/couchbase
dockerfile: Dockerfile
container_name: couchbase
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
environment:
- USERNAME=**
- PASSWORD=**
- BUCKET=blah
networks:
- my-network
localstack:
build:
context: ./docker-compose/localstack
dockerfile: Dockerfile
container_name: localstack
environment:
- SERVICES=s3,sqs
- HOSTNAME=localstack
- DEFAULT_REGION=eu-west-2
ports:
- "4572:4572"
- "4576:4576"
- "8080:8080"
networks:
- my-network
volumes:
- ./docker-compose/localstack/provision.sh:/docker-entrypoint-initaws.d/provision.sh
eventstore:
image: eventstore/eventstore:release-5.0.0
container_name: 3ds2-eventstore
environment:
- EVENTSTORE_START_STANDARD_PROJECTIONS=TRUE
- EVENTSTORE_RUN_PROJECTIONS=All
ports:
- "2113:2113"
- "1113:1113"
networks:
- my-network
networks:
my-network:
name: my-network
Проблема в том, что каждый репо содержит одинаковые docker-compose.infrastructure.yml
, и если происходит изменение инфраструктуры, это означает, что мы должны сделать одно и то же изменение на всехдругие репозитории.
Я пытаюсь выяснить, есть ли способ централизовать docker-compose.infrastructure.yml
, либо разместив его где-нибудь, а затем заставляя все остальные репозитории его опускать и запускать.
Из того, что я понимаю, это не может быть изображение, потому что это потеряет среду и настройки порта.
Если есть элегантный способ централизовать сборку инфраструктуры для всех остальных репозиториев, пожалуйста, дайте мне знать, как это сделать.