the plugin mvn hub found for current and java maven docker spotify docker-toolbox

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