使用了下面的命令,但环境的值没有传入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
,则可以正常工作。但是发送命令行参数时,它不会得到它。
3条答案
按热度按时间p5fdfcr11#
您可以尝试使用
BuildConfig
自动编辑YAML清单文件(例如使用yaml
python包)将条目添加到buildArgs
数组中,该数组位于BuildConfig
的dockerStrategy
定义中。例如:有关详细信息,请参阅相关的Openshift文档。
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-argsm1m5dgzv3#
事实证明,在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
不能用它们参数化。