我的方案是遵循如何使用shell脚本设置在dockerfile环境变量动态值
我需要添加“项目”文件夹泊坞窗容器的生产版本,但对于开发版本我想挂载投影容器的本地容量文件夹 例如。
ADD project /var/www/html/project
生产
发展什么,如果我整个项目文件夹复制到容器的发展则项目文件夹中的任何改变都会add命令后层的泊坞窗废除高速(我可以在开发复制的虚拟文件夹)。开发Docker镜像需要时间。
我想用同样的搬运工文件两个环境
为了实现我在泊坞窗文件,其中$ PROJECT_DIR是环境变量
设置在泊坞窗文件中的环境变量像
ENV PROJECT_DIR project
使用ADD $PROJECT_DIR /var/www/html/project
或ENV CONFIG_FILE_PATH dummy-folder
将正确的文件夹添加到容器,但它需要我每次更改docker文件。建设搬运工图像像
docker build -t myproject --build-arg "BUILD_TYPE=PROD" --build-arg "PROJECT_DIR=project" .
为变量BUILD_TYPE和PROJECT_DIR相关时,我也可以通过“集结ARG”参数,我想设置基于BUILD_TYPE CONFIG_FILE_PATH变量。这将防止我忘记更改一个参数的情况。
对于设置我写下面的脚本 “set_config_path.sh”
if [ $BUILD_TYPE="PROD" ]; then PROJECT_DIR="project"; else PROJECT_DIR="dummy-folder"; fi
我然后运行dockerfile脚本使用
RUN . /root/set_project_folder.sh
这样做,set_project_folder.sh可以编写脚本的PROJECT_DIR变量访问BUILD_TYPE变量,但PROJECT_DIR未在Docker文件中反映出来
- 以m为单位运行set_project_folder.sh Ÿ本地机器的终端,该PROJECT_DIR变量发生变化,但它不与dockerfile
工作反正是有,我们可以环境变量从子shell脚本e.g“set_config_path.sh”在上述问题的变化?
如果可能的话,它可以在许多用例用来做搬运工建立动态
难道我做错了什么吗?
或
是否有另一个很好的方法来实现这一目标?
谢谢你好,你的解决方案将为条件下工作,我把上这个问题,对不起,我忘了提及其他条件。我也想使用“BUILD_TYPE”变量来复制生产版本的一些文件夹,但不能用于开发版本。我会更新我的问题也包括这一点 –