首页 > 解决方案 > 使用循环将文件添加到 docker 映像

问题描述

我有一个脚本,它创建了几个以 part_ 开头的文件,我想在 Dockerfile 中创建一个 for 循环,以在目录中搜索以 part_ 开头的文件并将它们添加到 docker 映像中。将每个文件添加为单独的层很重要(而不是使用通配符,如ADD part_* /directory/)。如何将文件动态添加到 docker 映像?

我想使用类似的东西RUN for f in part_*; do ADD $f /data/; done,但我不知道如何将 ADD 合并到 bash 脚本中。

这是 Dockerfile 的示例。

FROM ubuntu:20.04

RUN apt-get update && \
    rm -rf /var/lib/apt/lists/*

ADD part_aa /directory/
ADD part_ab /directory/
ADD part_ac /directory/
ADD part_ad /directory/
ADD part_ae /directory/
ADD part_af /directory/

COPY entrypoint.sh /usr/local/bin/

CMD entrypoint.sh

标签: dockerdockerfiledocker-image

解决方案


你可以使用脚本来创建你的 Dockerfile;

echo "FROM ubuntu:20.04" > Dockerfile
echo "RUN apt-get update && \
    rm -rf /var/lib/apt/lists/*" >> Dockerfile

for f in part_*; do echo "ADD $f /data/" >> Dockerfile; done

echo "COPY entrypoint.sh /usr/local/bin/" >> Dockerfile
echo "CMD entrypoint.sh" >> Dockerfile

推荐阅读