"Никогда не нужно было, и вот опять" (с)
Оказывается, кучища линуксовых утилит ком. строки, требующих для своей работы HTTP умеют работать через прокси, беря настройки подключения из переменной окружения
HTTP_PROXY, прокси нужно указывать в формате
http://user:pass@proxy:port.
Чуть подробнее, как я до такого докатился.
Мне сегодня из-за блокировок пришлось приседать так и эдак, собирая docker-контейнер одной утилиты, написанной на
go-lang. Сам go (go-get) для получения пакетов использует git и я знал, что он умеет через прокси, если настроить его так:
git config --global http.proxy "http://user:pass@proxy:port"
В go-get же параметры подключения передаются как раз через переменную окружения
HTTP_PROXY.
В итоге я добился нужного мне результата, отредактировав "штатный"
Dockerfile (
https://gist.github.com/kuntashov/32c3cca25eab9eeff117df040d0e768a).
А вот буквально сейчас посмотрел внимательнее документацию и оказалось, что ничего редактировать не нужно было: git также прекрасно понимает
HTTP_PROXY (теперь понимаю, что это же очевидно!), а пробросить значения переменных окружения в контейнер на этапе сборки можно при помощи аргумента
--build-arg.
В итоге решение такое:
docker build --build-arg http_proxy="http://user:pass@proxy:port" --build-arg LEGO_VERSION="master" -t lego .
P.S. Собирал
https://github.com/xenolf/lego, это альтернатива certbot'у
P.P.S. Шутки шутками, а скоро со всеми этими блокировками на самом деле дойдет до того, что кто-нибудь напишет какой-нибудь http-over-telegram протокол, т.к. сегодня это единственный инструмент, которому блокировки никак не помешали.
#docker #devops