2017-10-12 16 views
1

Lorsque j'essaie d'exécuter Boot dans Docker, à l'aide de l'image adzerk/boot-clj, je reçois des erreurs de connexion refusées. Plus précisément, lorsque le conteneur démarre, le démarrage est démarré, puis une trace de pile est générée. La trace (qui n'est pas facile à copier et à coller entre les ordinateurs sans connectivité) est essentiellement liée au téléchargement - https://github.com/boot-clj/boot/releases/download/2.7.2/boot.jar - et à la réception des erreurs «Connexion refusée».Connexion boot-clj refusée

Je demande, et réponds à cette question, dans l'espoir que cela pourrait aider quelqu'un d'autre.

+1

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

Répondre

0

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.

+0

P.S J'ai dû mettre un espace entre le protocole et le lien parce que SO ne me laissera pas poster plus de 2 liens pour un rep. ci-dessous 10! – pjullah