Я в процессе попытки контейнеризации нашей среды разработки с докером. Это включает в себя сочетание проектов Google Appengine, а также сервисов, которые в конечном итоге размещаются в движке Google Compute в контейнере vm.Docker Составление круговой контейнерной связи
В наших сценариях начальной загрузки среды разработки elasticsearch и nginx в boot2docker, а другие приложения запускаются на localhost: {порт продукта} в изолированной песочнице dev_appserver appengine. Этот процесс трудно справиться и поддерживать, поскольку он требует большого понимания того, как наши приложения обмениваются данными.
Я получаю сообщение об ошибке с помощью docker-compose, которая обнаруживает круговую зависимость между контейнерами.
Циркулярный импорт между cs и vbc и aa и sr.
Поскольку эта конфигурация предназначена только для сред разработки (mac osx), есть ли у кого-нибудь предложения или идеи по другому подходу при объединении всех зависимостей между наборами продуктов.
Часть Докер-compose.yml:
elasticsearch:
build: ./compute/containers/elasticsearch/elasticsearch
ports:
- "9200:9200"
environment:
- PROJECT_ID=localhost
nginx:
build: ./compute/containers/elasticsearch/nginx
links:
- elasticsearch:localhost
ports:
- "9201:9201"
cs:
build: ./CS
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8080 --admin_port=9080 --storage_path=/data/
ports:
- "8080:8080"
- "9080:9080"
volumes:
- /Users/source/CS/src:/src
- /Users/source/CS/data:/data
aa:
build: ./AA
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8081 --admin_port=9081 --storage_path=/data/
links:
- vbc:vbc-local
- st:st-local
- elasticsearch:localhost
ports:
- "8081:8081"
- "9081:9081"
volumes:
- /Users/source/AA/src:/src
- /Users/source/AA/data:/data
vbc:
image: google/cloud-sdk
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8082 --admin_port=9082 --storage_path=/data/
links:
- cs:cs-local
- sr:sr-local
- sm:sm-local
- ms:ms-local
- st:st-local
- cis:cis-local
- elasticsearch:localhost
ports:
- "8082:8082"
- "9082:9082"
volumes:
- /Users/source/VBC/src:/src
- /Users/source/VBC/data:/data
sr:
build: ./SR
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8083 --admin_port=9083 --storage_path=/data/
links:
- cs:cs-local
- aa:aa-local
ports:
- "8083:8083"
- "9083:9083"
volumes:
- /Users/source/SR/src:/src
- /Users/source/SR/data:/data
Вы могли бы рассмотреть вопрос об использовании сервиса реестра, например, consul https://github.com/progrium/docker-consul и автоматического регистратора для ваших контейнеров, таких как https://registry.hub.docker.com/u/progrium/registrator/. С помощью этих компонентов вы можете зарегистрировать свои контейнеры в консуле, и каждый контейнер должен будет прочитать необходимую информацию от консула, исключив круговые зависимости. Добавляет больше сложности, хотя. – christian