在我的 docker-compose.yml
文件我有很多服务:
还有一些我与
docker-compose run --rm
一起使用的 CLI 实用程序:当我启动我的系统时,我会做
docker-compose up
.不幸的是,这也尝试启动所有 CLI 实用程序。有没有办法在我的 docker-compose 中将这两个类别分开?
最佳答案
更新
以 docker-compose
1.28.0 开头新service profiles就是为此而生的!与 profiles
您可以将服务标记为仅在特定配置文件中启动:
services:
nginx:
# ...
mysql:
# ...
composer:
profiles: ["cli-only"]
# ...
# ...
npm:
profiles: ["cli-only"]
# ...
docker-compose up # start main services, no composer and no npm
docker-compose run --rm composer
docker-compose run --rm npm
原答案
不幸的是,目前没有方便的方法来做到这一点。官方推荐的方法是将您的命令分成自己的
docker-compose.yml
:# start all your services
docker-compose up
# execute a defined command in docker-compose.cli.yml
docker-compose -f docker-compose.cli.yml run npm update
# if your command depends_on a service you need to merge the configs
docker-compose -f docker-compose.yml -f docker-compose.cli.yml run npm update
指定多个 docker-compose.yml
带有 -f
的文件flag 会将它们合并在一起,参见 documentation .这允许您依赖在另一个文件中定义的服务/网络/卷。有关整个问题的深入讨论,请参阅 docker/compose#1896 .
关于docker - 如何仅针对服务进行 docker-compose up?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63051200/