java - mvn - Docker maven plugin ClientProtocolException(Windows 10 usando Docker Toolbox)
maven repository (3)
docker-machine env default
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
Intento crear una imagen de portador usando el docker-maven-plugin (provisto por spotify: https://github.com/spotify/docker-maven-plugin ) pero las cosas realmente no están funcionando. Al principio obtuve esta excepción:
org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375
Descubrí que tenía que crear un env. variable para arreglar esto ( https://github.com/spotify/docker-maven-plugin/issues/135 ):
set DOCKER_HOST=set DOCKER_HOST=tcp://192.168.99.100:2376
Entonces, después de configurar ese env. variable: sigo obteniendo esta 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
No tengo idea de cómo podría solucionar esto, cualquier aportación sería muy apreciada.
Debe configurar el reenvío de puerto de la caja virtual con la escucha del host en el puerto 2375:
> VBoxManage modifyvm "default" --natpf1 "guestssh,tcp,,2375,,2376"
guestssh es el nombre de reenvío de puerto, puede elegir el nombre.
si VBoxManage
no se reconoce, puede reemplazarlo por la ruta completa:
"pathVirtualBox / VBoxManage.exe"
Y después, si tiene un problema como "El servidor no respondió con una respuesta HTTP válida", copie los archivos certs de
"% USER% .docker / machines / certs"
a
"% USER% .docker"
porque docker-maven-plugin lee estos archivos en "% USER% .docker" (no copie certs de directorio, solo archivos).
Creo que podemos anular las propiedades maven para reemplazar el puerto 2375 y la ruta certs, pero aún no lo encuentro.
arreglado esto por:
<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>
Importante son estas dos etiquetas:
<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
Estoy usando un archivo docker, que ruta debe definir con esta etiqueta:
<dockerDirectory>src/main/docker</dockerDirectory>
Ahora puedes construir tu jar y generar una imagen de portón a través de:
mvn package docker: build