python 如何将命令行参数从oc start-build传递到dockerfile以设置dockerfile中的环境变量

nwsw7zdq  于 2023-05-05  发布在  Python
关注(0)|答案(3)|浏览(113)

使用了下面的命令,但环境的值没有传入Dockerfile。通过groovy脚本在oc容器中运行这些示例:
oc start-build -e environment=ipte2 ipte2-isell-api-7 --from-dir=./isell-python-wrapper --follow=true

**WARNING**: Specifying environment variables with binary builds is not supported.
Uploading directory "isell-python-wrapper" as binary input for the build ...
build "ipte2-isell-api-7-1" started
2)oc start-build --build-arg environment=ipte2 ipte2-isell-api-5 --from-dir=./isell-python-wrapper --follow=true

**WARNING**: Specifying build arguments with binary builds is not supported.
Uploading directory "isell-python-wrapper" as binary input for the build ...
build "ipte2-isell-api-5-1" started

error
Removing intermediate container f7ff031b18b1
Step 35/44 : COPY script/${environment}-local.conf /sum/lpp/ebb/local.conf
error: build error: lstat script/-local.conf: no such file or directory

Dockerfile

FROM wlp-base:0.1 #from statement base image
ARG environment

ENV environment=${environment}

COPY script/${environment}-local.conf

我需要在复制命令中传递上述环境值,如果我直接在Dockerfile中传递ENV environment=ipte2,则可以正常工作。但是发送命令行参数时,它不会得到它。

p5fdfcr1

p5fdfcr11#

您可以尝试使用BuildConfig自动编辑YAML清单文件(例如使用yaml python包)将条目添加到buildArgs数组中,该数组位于BuildConfigdockerStrategy定义中。例如:

dockerStrategy:
...
  buildArgs:
    - name: "foo"
      value: "bar"

有关详细信息,请参阅相关的Openshift文档。

b4qexyjb

b4qexyjb2#

这在使用简单docker build --build-arg environment=foo .时有效
我以前没有使用过oc,但是如果您找到了指定构建参数的方法,如https://docs.openshift.com/container-platform/3.6/dev_guide/builds/build_strategies.html#docker-strategy-build-args

m1m5dgzv

m1m5dgzv3#

事实证明,在OCP/OKD 3.11中,你不能通过--env key=value参数将env变量传递给oc start-build(你得到"WARNING: Specifying environment variables with binary builds is not supported."),这给你留下了两个选择:

  • 自动编辑Dockerfile(而不是在那里使用env变量),
  • 使用BuildConfig自动编辑YAML清单文件(例如使用yaml Python包)。

注意:在我的测试中,后一个选项被证明是完全无效的-- env变量没有传递给docker,所以Dockerfile不能用它们参数化。

相关问题