2016-01-15 23 views
6

Próbuję utworzyć obraz dokowania za pomocą wtyczki docker-maven (dostarczonej przez spotify: https://github.com/spotify/docker-maven-plugin), ale rzeczy nie działają naprawdę. Na początku otrzymałem ten wyjątek:Dodatek Docker maven ClientProtocolException (Windows 10 przy użyciu Docker Toolbox)

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

Dowiedziałem się, że muszę stworzyć env. Zmienna to naprawić (https://github.com/spotify/docker-maven-plugin/issues/135):

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

docker_host

Więc po ustawieniu tego env. zmienna Wciąż otrzymuję ten 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 

nie mam pojęcia jak można to naprawić, każde wejście byłoby bardzo mile widziane.

Odpowiedz

4

Musisz skonfigurować port forwarding VirtualBox z hostem na porcie 2375 słuchać:

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

guestssh to nazwa przekierowanie portów, można wybrać nazwę.

jeśli VBoxManage nie rozpoznać, można zastąpić ją pełną ścieżką:

„pathVirtualBox \ VBoxManage.exe”

i po jeśli masz problem jak „Serwer nie odpowie prawidłową odpowiedź HTTP” skopiować pliki certyfikatów z
"% maszyn USER% .docker \ \ certyfikatów"
do
"% user% .docker"
przyczyną doker-maven-plugin przeczytać f iles w "% USER% .docker" (nie kopiuj certyfikatów katalogu, tylko pliki).

Myślę, że możemy przesłonić właściwości maven, aby zastąpić port 2375 i ścieżkę certyfikatów, ale nadal nie mogę go znaleźć.

+0

Szkoda, że ​​nie może dać tę odpowiedź więcej upvotes. Gdyby przekierowanie portu skonfigurowało się przed znalezieniem tej odpowiedzi, ale wciąż zmagało się z "_ Serwer nie odpowiedział prawidłową odpowiedzią HTTP". Po skopiowaniu certyfikatów sugerowanych w tej odpowiedzi wszystko zaczęło działać zgodnie z oczekiwaniami. Wielkie dzięki! – jigga

3

ustalone to poprzez:

 <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> 

ważne są te dwa tagi:

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

Używam dockerfile, która ścieżka trzeba określić z tego tagu:

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

Teraz możesz zbudować słoik i wygenerować obraz dokowany przez:

pakiet

mvn doker: zbudować

0

domyślny env doker automatyczna

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