验证docker-compose yml文件

124

有没有一种简单的方法来验证一个docker-compose文件(docker-compose.ymlfig.yml)的语法等,而不必运行docker本身?

我正在尝试添加一个快速检查到我的构建/测试流程中,以验证我的组合文件。


请注意,我知道的是 https://github.com/docker/compose/issues/129。 - Adrian Mouat
1
你可以将构建流程放在一个容器中,使用适当的Docker进行测试。有点像Docker本身。这样行得通吗? - schemar
3个回答

216

与此同时,docker-compose config已被添加到docker-compose中。现在,验证您的文件就像执行以下命令一样简单:docker-compose -f docker-compose.yml config。与往常一样,当您在与文件本身相同的目录中运行此命令或者将COMPOSE_FILE环境变量指向您的文件时,可以省略 -f docker-compose.yml 部分。


12
输出错误时,甚至不提供行号……为什么?这难道很困难吗? - Toby
10
几乎没有用,我的情况下它只返回一个错误:“不支持的配置选项”。它没有告诉我是哪个选项不支持,也没有提供行号。 - Mark Stosberg
3
在2023年4月,输出似乎有所改善,至少使用docker compose而不是docker-compose(docker compose版本2.16)。我收到了一个通知:“services.app_com.networks.mynetwork必须是映射”,这是关于错误节点的精确而充分的信息。 - MDickten

3

1
这是一个不错的建议,但它适用于 Dockerfiles,而不是 docker-compose.yml。 - Pierre-Luc Paour
2
什么意思?它字面上就是说 docker-compose-check - haruhi

1
在运行docker-compose.yaml文件的目录中执行以下命令:
docker-compose config --quiet && printf "OK\n" || printf "ERROR\n"

你将会得到以下输出之一:
OK
或者例如:
解析 /path/to/the/docker-compose.yaml yaml: unmarshal 错误: 第40行:映射键 "image" 在第29行已经定义 错误
如果你想检查不在当前目录中的 docker-compose.yaml 文件,请使用标志 -f:
docker-compose -f /path/to/the/docker-compose.yaml config --quiet && printf "OK\n" || printf "ERROR\n"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接