2016-01-28 22 views
17

Tworzę obraz dokowany z plikiem JAVA i plik słoju coppying w obrazie. My Dockerfile jest:Uruchom plik jar w obrazie dokowanego

FROM anapsix/alpine-java 
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar 
RUN java -jar /home/testprj-1.0-SNAPSHOT.j 

Po wykonać następujące polecenia

docker build -t imageName. 

konsoli widzę wyjście z aplikacji i wszystko jest w porządku. Ale kiedy zatrzymam obraz, nie wiem jak ponownie uruchomić obraz? Kiedy wykonać następujące polecenia:

docker run -i -t imageName java -jar /home/testprj-1.0-SNAPSHOT.jar 

Bieg wniosek ponownie, ale w moim Dockerfile już pisałem tego polecenia. Jak uruchomić obraz bez tego polecenia, a aplikacja działa automatycznie?

Odpowiedz

35

Istnieje różnica między obrazami i pojemnikami.

  • Obrazy będą budować po
  • Można rozpocząć pojemników z obrazów

w Twoim przypadku:

Zmień swój wizerunek:

FROM anapsix/alpine-java 
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar 
CMD ["java","-jar","/home/testprj-1.0-SNAPSHOT.jar"] 

budować swój wizerunek:

docker build -t imageName . 

Teraz przywołaj program wewnątrz kontenera:

docker run --name myProgram imageName 

Teraz ponownie uruchomić program poprzez ponowne uruchomienie pojemnika:

docker restart myProgram 

Program zmieniło? Przebuduj obraz !:

docker rmi imageName 
docker build -t imageName . 
+2

Pojawia się komunikat "Błąd: nie można uzyskać dostępu do pliku jarfile /opt/helloworld.jar"! Czy powinienem udzielić pozwolenia na słoik? –

+0

Oto co mi się przydarzyło: ścieżka do słoika jest nieprawidłowa. Powinieneś to sprawdzić. – Sam003

+0

mnie też nie udało się z powodu względnych nazw ... – chenchuk