2016-01-28 17 views
17

Creo un'immagine docker con java e file jar jar in copia. mio Dockerfile è:Esegui file jar nell'immagine docker

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 

Dopo eseguire seguente comando

docker build -t imageName. 

Nella console vedo l'uscita dall'applicazione e everthing va bene. Ma quando interrompo l'immagine non so come eseguire di nuovo l'immagine? Quando eseguire il seguente comando:

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

La corsa applicazione di nuovo, ma nella mia Dockerfile ho già scritto questo comando. Come eseguire l'immagine senza questo comando e l'applicazione viene eseguita automaticamente?

risposta

35

C'è una differenza tra immagini e contenitori.

  • immagini verranno costruite VOLTA
  • Puoi iniziare contenitori dalle immagini

Nel tuo caso:

Cambia la tua immagine:

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

costruire la vostra immagine:

docker build -t imageName . 

Ora richiamare il programma all'interno di un contenitore:

docker run --name myProgram imageName 

Ora riavviare il programma di riavviando il contenitore:

docker restart myProgram 

Il vostro programma è cambiato? Ricostruisci l'immagine !:

docker rmi imageName 
docker build -t imageName . 
+2

Viene visualizzato un errore "Errore: impossibile accedere a jarfile /opt/helloworld.jar" !! Devo dare qualche autorizzazione per il barattolo? –

+0

Questo è quello che mi è successo: il percorso per jar non è corretto. Dovresti controllarlo. – Sam003

+0

Anche io non sono riuscito a causa di nomi relativi ... – chenchuk