我们正在开发一个由mongodb,java后端和基于express-js的前端组成的小项目。我们已选择docker-compose
作为除生产用途以外的所有部署工具,到目前为止,除了一个例外情况外它还相当不错。
目前,我们将其用于:
为了处理每个环境的所有各种调整,我们推断出一组泊坞文撰写文件:docker-compose.yml
,d-c.override.yml
,d-c.test.yml
,d-c.load.yml
和{{1为了简洁起见,d-c.demo.yml
替换为docker-compose
。
这使得我们使用极长的命令行调用来执行除基本任务之外的任何操作。例如:
d-c
情况变得更糟。
到目前为止,我们已经有了一些关于改善这一点的想法:
docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d --build
docker-compose -f docker-compose.yml -f docker-compose.test.yml exec test_container ./do_tests.sh
来提供服务并最小化复制粘贴(但会增加额外的复杂性); extends
(或bash脚本)中。易于使用,但感觉就像地毯下的复杂性; 所有这些想法都有它们的缺点 - 我想知道什么是适当的解决方案以及已经存在的工具。
答案 0 :(得分:1)
我认为3听起来是一个很好的解决方案。它不是“隐藏复杂性”,它只是自动执行重复性任务(键入长命令行)。
Makefile可以使用,但您可能也对dobi感兴趣(免责声明:我是此工具的作者)。 dobi
允许您在yaml文件中定义所有项目任务,包括使用不同的文件和项目名称运行Compose。您的项目的示例配置可能看起来像这样
compose=dev:
files: [docker-compose.yaml, d-c.override.yml]
compose=test:
files: [docker-compose.yaml, d-c.test.yml]
compose=load:
files: [docker-compose.yaml, d-c.load.yml]
然后您可以使用dobi dev
等运行任务
你甚至可能会发现一些一次性任务可以转移到dobi配置,无需额外的compose覆盖。