То, что вы, по сути, пытаетесь сделать здесь, - это иметь команду COPY
внутри команды RUN
.
В файлах Docker нет вложенных команд.
Более того, * Команда 1007 * запускает внутри промежуточного контейнера, созданного из образа. А именно, ARG arg=a
создаст промежуточный образ, затем docker раскрутит контейнер и использует его для запуска команды RUN
и зафиксирует этот контейнер в качестве следующего промежуточного образа в процессе сборки.
так что COPY
не может выполняться внутри контейнера, и фактически RUN
в основном запускает команду оболочки внутри контейнера, а COPY
не является командой оболочки.
AFAICT dockerfiles don У меня нет никаких средств для выполнения условного исполнения. Лучшее, что вы можете сделать:
COPY test.txt
RUN if [ "$arg" = "a" ] ; then \
echo arg is $arg; \
else \
echo arg is $arg; \
rm -r test.txt \
fi
Но имейте в виду, что если test.txt - это файл размером 20 ГБ, размер вашего изображения будет по-прежнему> 20 ГБ.