gpt4 book ai didi

docker - 访问 Dockerfile 中的 OpenShift 模板参数

转载 作者:行者123 更新时间:2023-12-02 19:29:46 24 4
gpt4 key购买 nike

OpenShift 构建参数(使用 OpenShift Docker 构建策略)是否会自动暴露给 Dockerfiles作为 Docker 构建参数( ARG )或环境变量( ENV ),或者这是否需要在 BuildConfig 中进行显式配置例如在这些地方:

oc explain bc.spec.strategy.dockerStrategy.buildArgs
oc explain bc.spec.strategy.dockerStrategy.env

我问的原因是我有一个带有多个参数的模板,还没有明确的配置,但明显的情况是在 Dockerfile 中可以访问某些参数(如 $VAR) 和其他参数不可访问( $VAR 为空)。在进一步调试我的情况之前,我想了解正常行为。

更新 我现在添加了一个 oc explain bc.spec.strategy.dockerStrategy.buildArgs模板的“缺失”参数部分,如下所示:
strategy:
type: Docker
dockerStrategy:
buildArgs:
- name: VAR
value: ${VAR}

但它的值在构建的容器内仍然是空的,而我预计它是 true (因为我从 oc new-app ... VAR=true 开始构建。所以其他东西也一定是错误的。

最佳答案

事实证明,这可能是我采用 OpenShift 的 Docker 构建策略的特殊方式的副作用。

我维护一个单独的Dockerfile在文件中并使用脚本 patch.sh用于将其插入上传的模板中。这很方便,因为一个 Dockerfile存储在 oc explain bc.spec.source.dockerfile需要一定的转义(在 YAML 表示中),脚本会处理这个问题。如果我必须更新 Dockerfile (在开发过程中经常发生)我只是使用逐字编辑文件 Dockerfile语法,然后重新运行脚本。

该脚本还负责从 Dockerfile 中删除某些参数定义。 (例如 ARG VAR )并将对它们的引用替换为对相应 OpenShift 模板参数的引用(例如 $VAR${VAR} )。这个想法是让脚本变成 Dockerfile这也适用于一个独立的 Docker 环境,它可以通过模板并行化为 OpenShift 的 Docker 构建策略提供服务。

实际发生的错误是因为我添加了一个新的模板参数,但没有相应地调整脚本。现在情况已恢复正常。

更新 我现在已经从补丁脚本中删除了用于操作参数的特殊逻辑,并在 bc.spec.strategy.dockerStrategy.buildArgs 下引入了构建参数。反而。条目如下所示:

buildArgs:
- name: VAR
value: ${VAR}

所以基本上,现在构建配置进行复制(而不是我的补丁脚本替换)。

关于docker - 访问 Dockerfile 中的 OpenShift 模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com