Par où commencer?
Mon problème principal était avec une configuration Docker + Clojure + Boot, en particulier lors de l'exécution de "boot" depuis l'intérieur du conteneur. En faisant ceci a vomi une trace de pile. C'est là que commence mon voyage. J'utilise l'image adzerk/boot-clj. Je l'ai utilisé localement (OSX) sans problème, le problème que j'ai rencontré était d'utiliser une machine virtuelle (CentOS 7) hébergée dans un centre de données d'entreprise.
docker run -ti adzerk/boot-clj
émission démarre ce conteneur, le point d'entrée est de démarrage, et il commence à tirer vers le bas des pots, en particulier boot.jar de Github. La trace de pile qui détaille plusieurs problèmes, mais le point crucial de c'était
“java.net.ConnectException: Connection refused” (connecting to Clojars.org:443)
Hmmm ...
Ainsi, au lieu de courir Boot immédiatement dans le récipient, j'ai spécifié le point d'entrée du conteneur comme « —-entrypoint bash
» donc je peut pousser autour un peu.
Donc, wget - connexion refusée.
Que diriez-vous sans Docker dans le chemin. Même chose. Connexion rejetée. Après une petite dispute avec l'équipe du réseau, j'ai découvert que la variable d'environnement "https_proxy" doit être définie sur CentOS pour acheminer le trafic vers Internet. Une question très spécifique à moi dans la situation.
Cependant .... Wget est maintenant très bien, à la fois sur l'hôte et dans le conteneur adzerk/boot-clj. Boot n'était cependant pas.
Dans le but de simplifier encore plus les choses, j'ai complètement sorti Docker de l'équation et utilisé le démarrage localement.
Installé java-1.8.0-openjdk.x86_64, installé Boot. Même problème.
Alors fouilla un peu et avait découvert - https: //github.com/boot-clj/boot-bin/issues/2
Ce fut un début. Il mentionne la définition de BOOT_JVM_OPTIONS, en particulier https.proxyHost et https.proxyPort.
Cela ne fonctionnait toujours pas ... Arrrg. OK, éliminons Boot de l'équation.
J'ai écrit un faisceau de test en Java, très simple qui se connecte à https: //clojars.org et tente de lire la page d'index.Copié à partir de https: //docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html et définissant les JVM_OPTS.
Il échoue toujours. "Connexion refusée"
.... Barbe étrange.
je suis finalement tombé sur ce SO - https: //stackoverflow.com/questions/43695299/java-httpurlconnection-works-on-windows-and-fails-on-linux - en particulier la réponse de Stephen C
"Java ne respecte pas nécessairement les paramètres de proxy par défaut de votre système. Puisque vous êtes capable de "rouler" l'URL sur la machine Linux, l'explication la plus probable est que Java n'utilise pas le proxy que vous avez configuré. Les liens suivants expliquent différentes manières de configurer les proxies pour Java: "
Donc, en prenant le premier lien - https: //stackoverflow.com/questions/120797/how-do-i-set-the-proxy-to -être utilisé par la machine virtuelle - et la réponse de Leonel
I a publié « java -Dhttps.proxyHost=xxx -Dhttps.proxyPort=80 HelloWorld
»
je reçois une erreur, mais un autre. C'est un progrès. "Impossible de tunnelliser via proxy"
Un rapide Google de ceci m'a conduit ici: http: //www.oracle.com/technetwork/java/javase/8u111-relnotes-3124969.html - "Désactiver l'authentification de base pour HTTPS tunnel »
donc mis à jour « java -Dhttps.proxyHost=xxx -Dhttps.proxyPort=80 -Djdk.http.auth.tunneling.disabledSchemes=“” HelloWorld
Profit.
Info:
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)
Désolé pour tous mes blasphèmes Boot.
Bien que ce soit bien et même encouragé à répondre à vos propres questions, vous devez clairement indiquer votre problème et ajouter une réponse utile sans "Hmmm ..." et autres fluff. – svgrafov