所以我了解到,您可以使用相同的docker-compose文件进行docker-machine的本地开发和使用docker swarm的生产环境,这很好,您还可以共享相同的docker-compose文件并为生产/本地环境添加特定配置。
一种认为我找不到的是仅在本地环境中定义服务的方法,我在本地编写了包含 redis/node/nginx/mongo 容器的文件,但在生产中我不想将 docker 用于 mongo,因为我使用外部服务器(Atlas/MLab(,是否可以这样做并继续使用相同的文件进行生产和开发?
Docker compose 有一个针对不同环境的解决方案 compose 文件 多个 compose 文件。您基本上将差异提取到子撰写文件中,并且在运行时可以合并撰写文件:
docker-compose.yml
version: '3'
services:
redis:
...
node:
...
nginx:
...
docker-compose.local.yml
...
services:
mongo:
...
在本地运行时,执行:
docker-compose -f docker-compose.yml -f docker-compose.local.yml up -d
当部署到 Swarm 时,您只需执行:
docker stack deploy --compose-file docker-compose.yml