可以定制ADD
命令以使用命令行参数。
基本上我有一个文件的不同版本,比如说file1和file2,并基于通过命令行传递的某些条件。
以下命令可以正常运行,并将file
从主机传输到docker,但是我没有找到任何有条件的引用。
ADD target/file.yml file.yml
答案 0 :(得分:0)
否,rm
不支持复制文件的条件方式。
但是有一种方法可以在从主机处应对时处理此类配置。
ADD
复制到某个file1 file2
位置,然后基于/temp
传递到docker build,将ARG
移动到file
。 target
而非基于ENV
的docker入口点执行上述操作ARG
内部版本:
这不会更新文件,将使用默认文件名file1复制
FROM alpine
ADD target/ /temp_target
RUN mkdir /target
#filename to be copied to the target
ARG file_name
# pass update_file true or false if true file wil be update to new that is passed to build-args
ARG update_file
ENV file_name=$file_name
ARG update_file=$update_file
#check if update_file is set and its value is true then copy the file from temp to target, else copy file1 to target
RUN if [ ! -z "$update_file" ] && [ "${update_file}" == true ];then \
echo "$update_file"; \
echo "echo file in temp_target"; \
ls /temp_target ;\
echo "updating file target" ;\
cp /temp_target/"${file_name}" /target/ ; \
echo "list of updated files in target"; \
ls /target ; \
else \
echo "copy with default file that is ${file_name}" ;\
cp /temp_target/file1 /target ;\
fi
这将更新目标中的文件,因此目标中的新文件为file2。
docker build --no-cache --build-arg file_name=file1 --build-arg update_file=false -t abc .