Docker 使用 dockerfile 以外的名称编写

don*_*lan 19 docker dockerfile docker-compose

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

proj_root/.../docks/foo.dockerfile
proj_root/.../docks/bar.dockerfile
Run Code Online (Sandbox Code Playgroud)

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

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


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

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

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

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

问题是:我如何docker-compose出发寻找foo.dockerfile而不是./Dockerfile

Mih*_*hai 34

在您的 docker-compose 服务下:

services:
  serviceA:
    build: 
      context: <folder of your project>
      dockerfile: <path and name to your Dockerfile>
Run Code Online (Sandbox Code Playgroud)

  • 这不是用户正在寻找的。理想情况下,有一种方法可以构建特定的 Dockerfile,例如“docker-compose build -i Dockerfile.staging”,而不是使用多个 docker-compose 文件。 (5认同)

Eri*_*kMD 16

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

例如:

version: 3
services:
  foo:
    image: user/foo
    build:
      context: .../docks
      dockerfile: foo.Dockerfile
  bar:
    image: user/bar
    build:
      context: .../docks
      dockerfile: bar.Dockerfile
Run Code Online (Sandbox Code Playgroud)