docker-compose 文件变得太长

Bay*_*rSe 5 docker docker-compose

我最近开始将我的自托管服务迁移到docker. 为了简化维护,我使用docker-compose. 一些容器相互依赖,另一些是独立的。

有了 20 多个容器和近 500 行代码,可维护性现在已经下降。

有没有保留一个大docker-compose文件的好方法?

blu*_*res 5

那是一个很大的 docker-compose.yml!将其分解为多个 docker-compose 文件。

您可以将多个 docker-compose 文件传递​​到一个docker-compose命令中。如果许多不同的容器按逻辑分解,使它们更易于使用的一种方法是docker-compose.yml按容器分组、逻辑用例分解,或者如果您确实想要,可以为每个服务创建一个 docker-compose 文件(但是您' d 有 20 个文件)。

然后,您可以使用 bash 别名或帮助程序脚本来运行docker-compose.

# as an alias
alias foo='docker-compose -f docker-compose.yml -f docker-compose-serviceA.yml -f docker-compose-serviceB-yml $@'
Run Code Online (Sandbox Code Playgroud)

然后:

# simple docker-compose up with all docker-compose files
$ foo -d up
Run Code Online (Sandbox Code Playgroud)

使用 bash 帮助程序文件非常相似,但您可以以更简单的方式将帮助程序脚本作为代码库的一部分进行更新:

#!/bin/bash

docker-compose -f docker-compose.yml \
  -f docker-compose-serviceA.yml \
  -f docker-compose-serviceB.yml \
  -f docker-compose-serviceC.yml \
  $@
Run Code Online (Sandbox Code Playgroud)

-f <file>注意:标志的顺序确实很重要,但如果您不覆盖任何服务,它可能不会影响您。无论如何要记住一些事情。