Есть несколько вариантов для достижения этой цели. Самый простой способ - указать JVM использовать системные прокси и определить прокси в качестве переменных среды для вашего контейнера Docker. Все параметры описаны ниже.
Вариант 1: Установка прокси-сервера непосредственно в Java
Вы можете определить прокси непосредственно в своем коде, используя System.setProperty(String, String)
:
System.setProperty("http.proxyHost", "proxy.example.com");
System.setProperty("http.proxyPort", "8080");
Обратите внимание, что прокси-сервер жестко закодирован. Это решение работает только в том случае, если прокси-сервер остается одинаковым для всех сред (локальная разработка, развертывание на сервере или в облаке).
Вариант 2: Септификация прокси-сервера при вызове JVM
Можно установить прокси как параметры командной строки при вызове виртуальной машины. Вам не нужны дополнительные конфигурации в вашем коде.
java -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 YourApplication
Здесь вы также можете использовать переменные окружения, если они установлены. Таким образом, настройки прокси-сервера могут динамически изменяться в зависимости от среды.
Вариант 3. Использование системных прокси
Третий вариант - указать JVM использовать сконфигурированные системные прокси-серверы (что можно сделать как описано ниже). Это снова достигается установкой параметра командной строки.
java -Djava.net.useSystemProxies=true YourApplication
Настройка системного прокси
Чтобы установить системные прокси для Docker, у вас снова есть две опции.
Вариант a: Использование переменных среды
Вы можете использовать переменные среды непосредственно в Dockerfile:
ENV HTTP_PROXY "http://proxy.example.com:8080"
Или вы можете указать переменные среды в вашей команде docker run
:
docker run --env HTTP_PROXY="http://proxy.example.com:8080" your-container
Вариант b: настройка клиента Docker
На клиенте Docker создайте или измените файл ~/.docker/config.json
и установите прокси:
{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.example.com:8080"
}
}
}
Эта опция только настраивает ваш локальный клиент, вам нужно будет соответственно настроить другие среды.