【问题标题】:Docker compose with name other than dockerfileDocker 组合使用 dockerfile 以外的名称
【发布时间】:2019-08-16 16:24:15
【问题描述】:

我使用 docker 创建 CLI 接口来测试我的代码。这些被合理地命名为:

proj_root/.../docks/foo.dockerfile
proj_root/.../docks/bar.dockerfile

因为涉及的dock不止一个,所以项目根目录的顶层“Dockerfile”是不合理的。虽然在 docker 中构建时无法复制祖先目录,但我可以克隆整个 repo。

所以我的项目架构适合我。


接下来,我查找 docker-compose,因为我需要将我的 docker 卡与 postgres db 匹配并公开一些端口。

但是,从命令行界面的角度来看,docker-compose 似乎锚定到了硬编码的“当前工作目录中的“Dockerfile”用户概念。

但是!我看到错误消息表明该工具能够查找任意命名的 dockerfile:

错误:找不到指定的 Dockerfile:Dockerfile

问题是:我如何设置docker-compose 关闭寻找foo.dockerfile 而不是./Dockerfile

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    在您的 docker-compose 中,在服务下:

    services:
      serviceA:
        build: 
          context: <folder of your project>
          dockerfile: <path and name to your Dockerfile>
    

    【讨论】:

    • 这不是用户想要的。理想情况下,会有一种方法来构建特定的 Dockerfile,例如 docker-compose build -i Dockerfile.staging,而不是拥有多个 docker-compose 文件。
    • 我最终所做的是将 ARG 用于在构建过程中需要更改的任何内容,并且只使用一个 Dockerfile。可能不适用于所有情况,但它适用于 CI/CD 分支。
    【解决方案2】:

    the documentation of docker-compose.yml 中所述,您可以覆盖docker-compose 服务的build 属性中的Dockerfile 文件名。

    例如:

    version: 3
    services:
      foo:
        image: user/foo
        build:
          context: .../docks
          dockerfile: foo.Dockerfile
      bar:
        image: user/bar
        build:
          context: .../docks
          dockerfile: bar.Dockerfile
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      相关资源
      最近更新 更多