docker Java忽略http代理设置
我有很多Java应用程序在Kubernetes中运行。这主要是遗留代码,代码库非常大。问题是几乎所有的应用程序都使用了一些第三方库。它会导致Java(确切地说是那些库)忽略Docker容器中的http_proxy
和https_proxy
环境变量。它也忽略了Java选项
由于庞大的代码库和多个依赖项,重写它以正确使用http代理是一项痛苦的任务。我们在一个应用程序中重新配置了整个Jsoup相关代码。这很容易做到,但我们有更复杂的应用程序,甚至有些根本没有源代码
那么,有没有办法使http代理系统范围内的AKA对Java透明?只需通过代理强制任何http/s流量
我尝试了许多技巧和调整,但什么都没有。请记住,我无法在k8s节点上设置全局规则。有多个应用程序我不想使用http代理
谢谢你的帮助
更新:
使用以下工具运行Java:
-Dhttp.proxyHost=my_proxy_ip -Dhttp.proxyPort=my_proxy_port
或:
-Djava.net.useSystemProxies=true
不幸的是,这不起作用。像这样硬编码:
System.setProperty("http.proxyHost", "someUrl");
System.setProperty("http.proxyPort", "somePort");
也失败了
这是因为有像Jsoup这样的第三方库。除非我们将此库配置为使用代理,否则它不会使用代理。只有Java本机http工具才能在此类设置中正确使用代理
更新2:
即使不是我想要的,我也尝试过在docker demon中硬编码代理。那只是绝望,有人建议我这么做只是为了测试。显然它所做的只是。。。只需在每个容器中设置http_proxy
环境变量。不幸的是,回到开始
这一点在第2点中有明确说明:
2. When you create or start new containers, the environment variables are set automatically within the container.
这里:https://docs.docker.com/network/proxy/但在匆忙中,我花了半个小时来学习这种艰苦的方法
有什么想法吗
共 (0) 个答案