我正在尝试使用 docker 将我们的开发环境容器化。这包括 Google Appengine 项目以及最终托管在容器化 vm 中的 Google Compute 引擎中的服务的组合。
我们当前的开发环境引导脚本在 boot2docker 中启动了 elasticsearch 和 nginx,其他应用程序在 dev_appserver appengine 沙箱中的 localhost:{product port} 上运行。事实证明,这个过程很难管理和维护,因为它需要深入了解我们的应用程序如何通信。
docker-compose 检测到容器之间的循环依赖时出现错误。
cs 和 vbc 以及 aa 和 sr 之间的循环导入。
由于此配置仅适用于开发环境(mac osx),因此在将所有产品套件依赖项链接在一起时,是否有人对采用不同方法提出建议或想法。
docker-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