2016-01-12 8 views
14

Używam Jenkinsa w kontenerze w doku, a Jenkins próbuje uruchomić moją kompilację maven. W ramach kompilacji dodatek docker maven nakazuje zbudować obraz dokowania.Co się dzieje, gdy wtyczka docker-maven próbuje zbudować obraz?

Ta część POM znajduje się poniżej.

<plugin> 
    <groupId>com.spotify</groupId> 
    <artifactId>docker-maven-plugin</artifactId> 
    <version>0.3.8</version> 
    <configuration> 
     <imageName>example</imageName> 
     <baseImage>java:latest</baseImage> 
     <skipDockerBuild>false</skipDockerBuild> 
     <cmd>["java", "-jar", "myLogThread-jar-with-dependencies.jar"]</cmd> 
     <resources> 
      <resource> 
       <directory>target/</directory> 
       <include>config.properties</include> 
      </resource> 
      <resource> 
       <directory>${project.build.directory}</directory> 
       <include>myLogThread-jar-with-dependencies.jar</include> 
      </resource> 
     </resources> 
    </configuration> 
</plugin> 

Build Maven biegnie aż próbuje budować obraz, w którym momencie się następujący komunikat o błędzie jest wypluł:

[INFO] Building image example 
[INFO] I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied 

mogę przejść do odpowiedniego katalogu i Dockerfile istnieje.

Mogę również uruchomić sudo docker build . i zbuduje obraz bez problemów.

Dlaczego budowa maven nie działa? Jaki wniosek jest składany do localhost: 80? Jak mogę to poprawić, aby maven mógł zbudować mój wizerunek?

Uwaga: Mam zamontowane gniazdo Döcker i binarne w tym kontenerze

+2

Czy kiedykolwiek to wymyśliłeś? Mam ten sam problem. – wholladay

+0

Spróbuj dodać 'DOCKER_OPTS = '-G jenkins'' bezpośrednio w/etc/default/docker. Następnie uruchom ponownie usługę dokowania przez 'sudo service docker restart' –

+0

Mam taki sam problem z dokładnie tym samym środowiskiem. Czy ktoś zna rozwiązanie? –

Odpowiedz

2

ten może być rozwiązany poprzez dodanie DOCKER_HOST zmienną środowiskową w Jenkins.

Konfiguracja demon doker tak:

[/etc/sysconfig/docker] 
OPTIONS="-H tcp://127.0.0.1:4243" 

Jenkins Jobs (wstrzyknąć zmienne środowiskowe):

DOCKER_HOST=tcp://127.0.0.1:4243 
2

Jak wspomniano powyżej Rajith Delantha to rozwiązało problem dla mnie:

Dodaj: DOCKER_OPTS=' -G jenkins' bezpośrednio w /etc/default/docker.

Następnie ponownie uruchom usługę dokowania przez sudo service docker restart.

0

Miałem ten sam problem, ale w mojej lokalnej maszynie.

Mam go po przeczytaniu tego komentarza w GitHub wątku: https://github.com/docker/compose/issues/1214#issuecomment-256774629

mówi:

Solution (od https://docs.docker.com/engine/installation/linux/debian/, nie działa tylko z Debiana):

Dodaj grupę dokowania, jeśli jeszcze nie istnieje.

sudo groupadd docker

Dodaj podłączonego użytkownika "$ {user}" do grupy Döcker. Zmień nazwę użytkownika , aby pasowała do preferowanego użytkownika. Być może trzeba będzie ponownie się wylogować i ponownie zalogować.

sudo gpasswd -a ${USER} docker

Restart demon dokowanym.

sudo service docker restart

0

ja w stanie rozwiązać problem dzięki połączeniu elementów obu upvoted odpowiedzi.

Ustaw opcje korzystania z innego portu w /etc/default/docker.

DOCKER_OPTS="-H tcp://127.0.0.1:4243" 

Uruchom ponownie demona Docker.

Następnie skompiluj swoją paczkę.

export DOCKER_HOST=tcp://127.0.0.1:4243 
mvn clean package docker:build