【问题标题】:openjdk:8 and nonProxyHosts is not workingopenjdk:8 和 nonProxyHosts 不工作
【发布时间】:2020-03-25 03:49:50
【问题描述】:

我有以下 docker 配置:

FROM openjdk:8

ADD *.jar /service.jar

VOLUME /tmp
EXPOSE 8080

# Set timezone CET (DE Time)
ENV TZ=CET
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

CMD echo "The Service will start..." && \
java -DsocksProxyHost=192.168.1.250 -Dhttp.nonProxyHosts="192.168.1.5|192.168.1.36" -jar /service.jar

我遇到的问题是 java 8 中完全忽略了非代理。如果我切换到 openjdk:9 工作正常,但我不能这样做,因为该服务的内容强烈依赖于 jdk 8。

我尝试不引用,转义管道字符但什么都没有:(

有人遇到这个奇怪的问题,有解决方案/解决方法吗?

【问题讨论】:

  • 这听起来像是新 JVM 的变化,就像你描述的那样;某些配置是否适用于 Docker 之外的相同 JVM 版本?
  • 噗,在 docker 之外很难复制,因为它在 GCP 上,但是在 docker 上是可以的,我会在本地尝试一些魔法。
  • socksProxyHost 应该是 http.proxyHost
  • 不,有socksProxyHost,因为它是用于JDBC的
  • 那么将带有 http.nonProxyHosts 的主机发送到哪里?

标签: java docker proxy ip


【解决方案1】:

解决了!

在研究了 openjdk8 和 openjdk9 的来源后,我发现我需要指定两次非代理 ip 列表。所以openjdk8的解决方案是:

java -DsocksProxyHost=192.168.1.250 -Dhttp.nonProxyHosts="192.168.1.5|192.168.1.36" -DsocksNonProxyHosts="192.168.1.5|192.168.1.36" -jar /service.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多