我有一个这样的Dockerfile:
FROM ubuntu:16.04
:
:
RUN git clone <url>
:
有时,我要克隆的存储库太大。
因此,在运行此
git clone
命令之前,我想检查一下 我要克隆的存储库是否存在于当前 目录( dockerfile 的目录(,如果是这样,那么我会做一个COPY <repo-name> .
指令而不是RUN git clone <url>
指令。
我想实现这样的事情:
FROM ubuntu:16.04
:
:
if exists <repo-name>
COPY <repo-name>
else
RUN git clone <url>
:
甚至可能吗?如果没有,我能做些什么来实现这一目标?
If-Else在Dockerfiles中不是东西。您最好在提供 If-Else 的RUN
中使用单行 bash 命令:
RUN if git clone <repo>; then echo "Exists"; else echo "Error"; fi
或者,如果您追求的行为需要更多的脚本,请将其放入脚本中并以这种方式运行它,以防止所有混乱出现在您的 Dockerfile 之外:
COPY git-script.sh /usr/local/bin
RUN chmod +x /usr/local/bin/git-script.sh &&
bash git-script.sh
在这里也找到了类似的答案。