У меня есть dockerfile что-то вроде:Dockerfile; Докер строить объемы: изменения объема через ADD или CO не отбрасывается
VOLUME /tmp/space
ADD local/directory/ /tmp/space/
RUN cp /tmp/space/somescript.sh /opt/real/space/
После того, как контейнер построен, и я получаю интерактивную оболочку я замечаю, что/TMP/пространства все еще содержит данные из локального/каталога.
Если я добавлю RUN rm -rf /tmp/space/*
в конец файла dockerfile и получаю доступ к оболочке. Данные все еще присутствуют в/tmp/space /.
В результате я оставил выполнение контейнера с использованием того же тома, а затем передал измененный контейнер обновленному изображению.
Есть ли способ во время сборки иметь временно загруженный том, который не раздувает результирующее изображение?
Целью является использование исходных файлов и скриптов для выполнения некоторых действий во время сборки. Слои докера заканчиваются записью дубликата этапа COPY/ADD
с шагом RUN
. Поэтому было бы лучше COPY
данные в пространство, которое не записывается как слой, а затем как один шаг RUN
cp stuff && execute scripts
, чтобы сэкономить на пространстве.
То, что я в конечном итоге делает это с помощью COPY для всей локальной папки и сохранения файла dockerignore пропустить файлы, которые мне не нужны в полученном изображении. Не идеально, но это в конечном итоге спасает меня около 200 МБ пространства. –