Конфигурация прокси Docker не работает для ADD в Dockerfile - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь написать Dockerfile, который добавляет файл к изображению следующим образом:

ADD https://repository.internal/file.zip /tmp/

Хост repository.internal доступен только через прокси.Я предоставляю настройку прокси-сервера с параметром --config, но команда ADD, похоже, не использует прокси-сервер и не работает.

Я знаю, что конфигурация прокси-сервера верна, потому что я добавил строку

RUN curl https://repository.internal/file.zip

, который работает нормально.

Есть ли возможность запустить команду ADD также с настройкой прокси?

1 Ответ

0 голосов
/ 09 февраля 2019

Согласно моим комментариям выше, я считаю, что это как-то связано с внутренним способом, которым процесс сборки Docker обрабатывает команды ADD и RUN ... Не могу найти документацию для поддержкиэто - так что кто-то с большим внутренним знанием может подтвердить или опровергнуть, но имеет смысл, как команда RUN выполняется в слое ДО строящегося изображения, где, как команда ADD выполняется и результат из них запекаются в изображение.

Каким бы способом это ни обрабатывалось, вы можете достичь того, что вам нужно, перейдя к методу RUN следующим образом:

FROM <your base image>

RUN curl https://repository.internal/file.zip >> /tmp/file.zip \
    && cd /tmp \ 
    && unzip file.zip \
    && rm file.zip

Иу вас будут разархивированные файлы.

Возможно, вам придется проверить, требуется ли rm в конце - не могу вспомнить, если команда unzip удаляет исходный zip-файл.

Как вы упомянули, это будет зависеть от пакетов curl и unzip, доступных на изображении ... однако вы можете избежать их в вашем окончательном приложении.Ионное изображение с использованием Docker Multi Stage Builds

Ваш Dockerfile будет выглядеть примерно так:

FROM <some useful base image> as collector

RUN apt-get install -y curl unzip
RUN mkdir /tmp/files && \
    && curl https://repository.internal/file.zip >> /tmp/files/file.zip \
    && cd /tmp/files \ 
    && unzip file.zip \
    && rm file.zip

FROM <your final desired base image>

COPY --from=collector /tmp/files /tmp

Затем будет использоваться изображение с curl и unzip для сбора и обработки извлечения файлов без необходимости устанавливать их в окончательном образе приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...