Запустите apt-get с прокси в Dockerfile
Я за прокси, мне нужно что-то установить через apt-get
,
Лучшее, с чем я пришел, это
ARG PROXY
ENV http_proxy=$PROXY
ENV https_proxy=$PROXY
RUN apt-get update -y && apt-get -y install ...
ENV http_proxy=
ENV https_proxy=
Дело в том, что мне нужно потом сбросить эти переменные окружения.
Есть идеи, как сделать это менее чем за 5 слоев?
2 ответа
Вам нужно использовать переменные времени сборки (–build-arg).
Этот флаг позволяет передавать переменные времени сборки, к которым обращаются, как к обычным переменным среды, в инструкции RUN Dockerfile. Кроме того, эти значения не сохраняются в промежуточных или конечных изображениях, как значения ENV.
Так что ваши Dockerfile
всего 3 строчки:
ARG http_proxy
ARG https_proxy
RUN apt-get update -y && apt-get -y install ...
И вам просто нужно определить переменные времени сборки http_proxy
и / или https_proxy
во время построения изображения:
$ docker build --build-arg http_proxy=http://<proxy_ip>:<proxy_port> --build-arg https_proxy=https://<proxy_ip>:<proxy_port> .
Используя также переменные времени сборки (–build-arg), вы можете добавить в начале (до apt-get update
) подходящая конфигурация прокси:
...
ARG APT_PROXY
RUN echo "Acquire::http::Proxy \"$APT_PROXY\";" | tee /etc/apt/apt.conf.d/01proxy
RUN apt-get update -y && apt-get -y install ...
...
Это полезно в сценарии, в котором вы хотите кэшировать пакеты только из хранилищ APT