2016-01-15 2 views
6

J'essaye de construire une image de docker en utilisant le docker-maven-plugin (fourni par spotify: https://github.com/spotify/docker-maven-plugin) mais les choses ne fonctionnent pas vraiment. Au début j'ai eu cette exception:Docker maven plugin ClientProtocolException (Windows 10 en utilisant Docker Toolbox)

org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 

J'ai découvert que je devais créer un env. variable pour résoudre ce problème (https://github.com/spotify/docker-maven-plugin/issues/135):

set DOCKER_HOST=set DOCKER_HOST=tcp://192.168.99.100:2376 

docker_host

Ainsi, après la mise env que. variables Je continue à obtenir cette ClientProtocolException:

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.3.258:build (default-cli) on project docker_micro_maven: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException: The server failed to respond with a valid HTTP response 

Je ne sais pas comment je pourrais résoudre ce problème, toute entrée serait grandement apprécié.

Répondre

4

Vous devez configurer la redirection de port virtualbox avec l'hôte écouter sur le port 2375:

> VBoxManage modifyvm "default" --natpf1 "guestssh,tcp,,2375,,2376"

guestssh est le nom de la redirection de port, vous pouvez choisir le nom.

si VBoxManage est reconnaît pas, vous pouvez le remplacer par le chemin complet:

« pathVirtualBox \ VBoxManage.exe »

Et après si vous avez un problème comme « Le serveur n'a pas répondu avec une machine valide réponse HTTP » copie les fichiers certs de
de "% USER% .docker \ examples \ certs"
à
"% USER% .docker"
cause de docker-maven-plugin lire f Iles dans "% USER% .docker" (ne copiez pas les certificats de répertoire, juste les fichiers).

Je pense que nous pouvons remplacer les propriétés maven pour remplacer le port 2375 et le chemin certs, mais je ne le trouve toujours pas.

+0

Dommage que je ne peux pas donner cette réponse plus upvotes. La redirection de port avait-elle été configurée avant de trouver cette réponse, mais était toujours aux prises avec "_Le serveur n'a pas répondu avec une réponse HTTP valide_". Après avoir copié les certificats comme suggéré dans cette réponse, tout a commencé à fonctionner comme prévu. Grand merci! – jigga

3

fixe en:

 <plugin> 
      <groupId>com.spotify</groupId> 
      <artifactId>docker-maven-plugin</artifactId> 
      <version>0.4.13</version> 
      <configuration> 
       <imageName>yourImageName</imageName> 
       <dockerDirectory>src/main/docker</dockerDirectory> 
       <dockerHost>https://192.168.99.100:2376</dockerHost> 
       <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 
       <resources> 
        <resource> 
         <targetPath>/</targetPath> 
         <directory>${project.build.directory}</directory> 
         <include>${project.build.finalName}.jar</include> 
        </resource> 
       </resources> 
      </configuration> 
     </plugin> 

importants sont ces deux balises:

<dockerHost>https://192.168.99.100:2376</dockerHost> 
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 

J'utilise un dockerfile, quel chemin vous devez définir avec ce tag:

<dockerDirectory>src/main/docker</dockerDirectory> 

Maintenant, vous pouvez construire votre pot et générer l'image docker via:

mvn package docker: construire

0

par défaut env docker machine

set DOCKER_HOST=tcp://192.168.99.100:2376 
set DOCKER_MACHINE_NAME=default 
set DOCKER_TLS_VERIFY=1 
set DOCKER_TOOLBOX_INSTALL_PATH=C:\Program Files\Docker Toolbox 
set DOCKER_CERT_PATH=C:\Users\panhl-a\.docker\machine\machines\default