【问题标题】:Modifying Docker Registry based on environment根据环境修改 Docker Registry
【发布时间】:2021-09-21 21:23:15
【问题描述】:

我的本​​地开发环境位于公司代理之后,使用我们自己的 Docker 注册表等。但是,我们部署在公共基础架构上,这意味着我们无法访问公司注册表,因此必须从公共注册表中提取(例如DockerHub)。

我有什么方法(例如通过环境变量)配置 Docker 在本地开发时从私有注册表中提取,在通过我们的 CI/CD 管道时从公共注册表中提取?

例如,假设我们正在部署一个 Node.JS 应用程序 - 在本地,我希望 FROM node:16 行被解释为 FROM corporate.proxy/node:16

有几种方法可能会起作用 - 拥有两个独立的 Dockerfile,例如 Dockerfile.devDockerfile.prod,或者将其包装在某种脚本中以进行更改。如果可能的话,我正在寻找一种通过 Docker 的配置来实现它的方法。

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    您可以使用 ARG 指令更改 Dockerfile 中的 FROM 行。

    ARG IMG
    FROM ${IMG}
    

    然后你可以像这样构建图像:

    docker build --build-arg IMG=node:16 .
    

    docker build --build-arg IMG=corporate.proxy/node:16 .
    

    来自 Dockerfile 参考文档:

    ARG 是 Dockerfile 中唯一可以在 FROM 之前的指令

    https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 2021-09-04
      • 2019-04-30
      • 2016-06-25
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多