如何在 docker-compose.yml 文件中有条件地设置服务?
How can you conditionally set services in the docker-compose.yml file?
我刚开始使用 Docker 和 Cake。目前我们有一个简单的 Cake 任务,运行s DockerComposeUp() 方法采用 DockerComposeUpSettings 对象。 docker-compose.yaml 文件包含有关我想有条件地 运行 (serviceA):
的服务的一些信息
version: "1.0"
services:
serviceA:
image: someImage
ports:
-"000000"
-"000001"
serviceB:
image: someOtherImage
anotherProperty: somethingElse
ports:
-"111111"
我尝试将 serviceA 拆分成一个名为 'docker-compose.serviceA.yaml' 的单独 docker-compose 文件,并通过向 DockerComposeUpSettings.ArgumentCustomization 添加以下内容来调用它:
if(some setting)
{
dockerComposeUpSettings.ArgumentCustomization = builder => builder.Append("-f docker-compose.yaml -f docker-compose.serviceA.yaml");
}
但是,Cake 抛出以下错误:
"unknown shorthand flag: 'f' in -f"
如何使用 Cake 合并到 docker-compose 文件作为 DockerComposeUp 方法的一部分?
更新
我发现 DockerComposeUpSettings 对象上有一个 'Files' 属性(继承自 DockerComposeSettings 对象),您可以在其中声明配置文件.所以我添加了:
if(some flag)
{
dockerComposeSettings.Files = new[]{ "docker-compose.yaml", "docker-compose.serviceA.yaml" };
}
我不太了解 docker,但查看文档 here and here 似乎在指定的命令之前设置 -f
选项很重要命令行。您的自定义 (builder.Append()
) 将它们放在命令行的末尾。
您是否尝试过设置 DockerComposeUpSettings 的 Files
属性?这看起来就是您要找的东西。
我刚开始使用 Docker 和 Cake。目前我们有一个简单的 Cake 任务,运行s DockerComposeUp() 方法采用 DockerComposeUpSettings 对象。 docker-compose.yaml 文件包含有关我想有条件地 运行 (serviceA):
的服务的一些信息version: "1.0"
services:
serviceA:
image: someImage
ports:
-"000000"
-"000001"
serviceB:
image: someOtherImage
anotherProperty: somethingElse
ports:
-"111111"
我尝试将 serviceA 拆分成一个名为 'docker-compose.serviceA.yaml' 的单独 docker-compose 文件,并通过向 DockerComposeUpSettings.ArgumentCustomization 添加以下内容来调用它:
if(some setting)
{
dockerComposeUpSettings.ArgumentCustomization = builder => builder.Append("-f docker-compose.yaml -f docker-compose.serviceA.yaml");
}
但是,Cake 抛出以下错误:
"unknown shorthand flag: 'f' in -f"
如何使用 Cake 合并到 docker-compose 文件作为 DockerComposeUp 方法的一部分?
更新
我发现 DockerComposeUpSettings 对象上有一个 'Files' 属性(继承自 DockerComposeSettings 对象),您可以在其中声明配置文件.所以我添加了:
if(some flag)
{
dockerComposeSettings.Files = new[]{ "docker-compose.yaml", "docker-compose.serviceA.yaml" };
}
我不太了解 docker,但查看文档 here and here 似乎在指定的命令之前设置 -f
选项很重要命令行。您的自定义 (builder.Append()
) 将它们放在命令行的末尾。
您是否尝试过设置 DockerComposeUpSettings 的 Files
属性?这看起来就是您要找的东西。