0

我是使用 Docker 和 Cake 的新手。目前我们有一个简单的 Cake 任务,它运行 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 抛出以下错误:

“未知的速记标志:'f' in -f”

作为 DockerComposeUp 方法的一部分,如何使用 Cake 合并到 docker-compose 文件?

更新

我发现 DockerComposeUpSettings 对象(继承自 DockerComposeSettings 对象)上有一个“文件”属性,您可以在其中声明配置文件。所以我添加了:

if(some flag)
{
    dockerComposeSettings.Files = new[]{ "docker-compose.yaml", "docker-compose.serviceA.yaml" };
}
4

1 回答 1

0

我对 docker 了解不多,但是看看这里这里-f的文档,在命令行上指定的命令之前设置选项似乎很重要。您的自定义 ( builder.Append()) 将它们放在命令行的末尾。

您是否尝试过设置DockerComposeUpSettingsFiles的属性?这看起来像你正在寻找的东西。

于 2021-11-16T09:37:27.363 回答