當試圖在Docker中運行Boot時,使用adzerk/boot-clj映像,我收到連接拒絕錯誤。Boot-clj連接被拒絕
具體而言,當容器啓動時,啓動引導,然後輸出堆棧跟蹤。跟蹤(在不連通的計算機之間不容易複製和粘貼)基本上與下載相關 - https://github.com/boot-clj/boot/releases/download/2.7.2/boot.jar - 接收「連接被拒絕」錯誤。
我在問,並回答這個問題,希望它可以幫助別人。
當試圖在Docker中運行Boot時,使用adzerk/boot-clj映像,我收到連接拒絕錯誤。Boot-clj連接被拒絕
具體而言,當容器啓動時,啓動引導,然後輸出堆棧跟蹤。跟蹤(在不連通的計算機之間不容易複製和粘貼)基本上與下載相關 - https://github.com/boot-clj/boot/releases/download/2.7.2/boot.jar - 接收「連接被拒絕」錯誤。
我在問,並回答這個問題,希望它可以幫助別人。
從哪裏開始?
我的主要問題是Docker + Clojure + Boot設置,特別是從容器內部運行「boot」時。這樣做會產生堆棧跟蹤。這是我的旅程開始的地方。
我正在使用adzerk/boot-clj圖像。我在本地使用它(OSX)沒有問題,我遇到的問題是使用託管在公司數據中心內的VM(CentOS 7)。
docker run -ti adzerk/boot-clj
發行此啓動容器,進入點在啓動,並開始從GitHub拉低一些罐子,特別是boot.jar。得到的堆棧跟蹤細節的幾個問題,但問題的癥結所在是
「java.net.ConnectException: Connection refused」 (connecting to Clojars.org:443)
嗯...
所以不是運行Boot容器馬上,我指定的容器入口點爲「—-entrypoint bash
」所以我可以刺激一點。
所以,wget - 連接被拒絕。
沒有Docker的情況下怎麼樣。一樣。拒絕連接。
經過與網絡團隊的小小爭論後,我發現需要在CentOS上設置「https_proxy」env變量來將流量路由到互聯網。這是一個非常具體的問題。
然而......。
wget現在很好,無論是在主機上,還是在adzerk/boot-clj容器中。然而,啓動不是。爲了更加簡化事情,我將Docker完全排除在等式之外,並在本地使用引導。
安裝了java-1.8.0-openjdk.x86_64,安裝了Boot。同樣的問題。
所以周圍一點點挖,發現這一點 - HTTPS://github.com/boot-clj/boot-bin/issues/2
這是一個開始。它提到了設置BOOT_JVM_OPTIONS,特別是https.proxyHost和https.proxyPort。
它仍然沒有工作... Arrrg。
好的,讓我們把Boot從等式中拿出來。
我寫了一個Java測試工具,非常簡單,它連接到https://clojars.org並嘗試讀取索引頁。從https://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html複製並設置JVM_OPTS。
它仍然失敗。 「連接被拒絕」
...。怪異的鬍子。
我終於偶然發現這個SO - HTTPS://stackoverflow.com/questions/43695299/java-httpurlconnection-works-on-windows-and-fails-on-linux - 特別是從斯蒂芬ç
答案「」Java不一定尊重您系統的默認代理設置。由於您可以在Linux機器上「捲曲」URL,因此最可能的解釋是Java不使用您配置的代理。以下鏈接解釋了配置Java代理的各種方法:「
因此,採取第一個鏈接 - https://stackoverflow.com/questions/120797/how-do-i-set-the-proxy-to -be使用的,由這JVM - 和萊昂內爾
我發出「java -Dhttps.proxyHost=xxx -Dhttps.proxyPort=80 HelloWorld
」
的答案,我得到一個錯誤,但不同的一個。這是進步。 「無法通過代理隧道」
快速谷歌這導致我在這裏:http://www.oracle.com/technetwork/java/javase/8u111-relnotes-3124969.html - 「禁用基本身份驗證的HTTPS隧道」
所以更新爲「java -Dhttps.proxyHost=xxx -Dhttps.proxyPort=80 -Djdk.http.auth.tunneling.disabledSchemes=「」 HelloWorld
利潤。
信息:
java -v
openjdk version 1.8.0_144
Openjdk Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)
對不起,我所有的褻瀆啓動。
P.S我不得不在協議和鏈接之間留出一個空格,因爲不會讓我發佈超過2個鏈接的代表。低於10! – pjullah
儘管它很好,甚至鼓勵回答你自己的問題,你應該清楚地說明你的問題,並添加有用的答案,而不用「嗯......」和其他絨毛。 – svgrafov