Настройки прокси для клиента Big Query Java - PullRequest
0 голосов
/ 11 февраля 2020

Я пишу приложение Java, которое взаимодействует с API-интерфейсами Big Query и также будет работать в контейнере docker. Мне нужна помощь в настройке http и https для моего приложения. Я не уверен, достаточно ли указывать только переменные окружения для контейнера docker или требуется только установка прокси в коде java или оба, и как я могу сделать то же самое.

Заранее спасибо

1 Ответ

2 голосов
/ 11 февраля 2020

Есть несколько вариантов для достижения этой цели. Самый простой способ - указать 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"
   }
 }
}

Эта опция только настраивает ваш локальный клиент, вам нужно будет соответственно настроить другие среды.

...