У меня есть локальный файл размером ~ 300 Мб, который я добавляю к изображению докеров. Затем следующее состояние извлекает изображение.Docker как добавить файл без отправки изображения?
Проблема заключается в том, что оператор ADD приводит к фиксации, результатом чего является новый уровень файловой системы, что делает изображение размером ~ 300 Мб больше, чем должно быть.
ADD /files/apache-stratos.zip /opt/apache-stratos.zip
RUN unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
Вопрос: Есть ли обходные для ADD локальных файлов, не вызывая коммита?
Одним из вариантов является запуск простой веб-сервер (например, python -m SimpleHTTPServer
) перед началом Docker сборки, а затем с помощью wget
для извлечения файла, но, кажется, немного грязный:
RUN wget http://localhost:8000/apache-stratos.zip && \
unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
Другой вариант заключается в извлеките заархивированный файл при запуске контейнера вместо времени сборки, но я бы предпочел сохранить запуск как можно быстрее.
Кажется, не распаковывает '.zip' файл на Docker 1.2.0. –
«Если [src] является локальным tar-архивом в распознанном формате сжатия (identity, gzip, bzip2 или xz), он распаковывается как каталог». –
Факт ADD, не поддерживающий поддержку файлов '.zip', по-видимому, является предполагаемым решением: https://github.com/docker/docker/issues/15036 – jap1968