Openshift在创建应用程序时传递Dockerfile或Docker Image Environment变量

问题描述

我正在使用Openshift ARC Platform部署我的Docker映像。

我们需要创建三个项目,每个项目的环境变量都略有变化。

# Dockerfile 
ARG X
ENV PROJECT_NAME=$X
ENV SOMETHING abc-${PROJECT_NAME}
ENV data_dir /data/${PROJECT_NAME}
...

当前,我们在X期间使用--build-arg选项提供docker build的值。这就要求我们创建3个单独的映像(带有不同的标记),然后使用oc new-app -n <namespace> --iamge-stream=<image registry location>语法进行部署。

我想知道是否有某种策略被广泛使用,从而避免构建ENV变量中仅有少量更改的3个不同图像,而我们可以只使用一个图像并在使用{ {1}}。

解决方法

如果需要将变量传递给在Pod中运行的应用程序,则无需向Dockerfile添加环境变量。因此,由于环境变量,您无需创建多个图像。 https://docs.openshift.com/container-platform/3.7/dev_guide/application_lifecycle/new_app.html#specifying-environment-variables

在Openshift中,您可以按以下方式将环境变量传递到应用程序的容器中。

oc new-app -e PROJECT_NAME=projectx -e SOMETHING=abc-projectx -e DATA_DIR=/data/projectx