2016-01-28 3 views
17

Я создаю изображение докера с java и копирующим файлом jar на изображении. Моего Dockerfile является:Запустить файл jar в файле 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 

После выполнения следующей команды

docker build -t imageName. 

В консоли я вижу выход из приложения и Everthing прекрасно. Но когда я останавливаю изображение, я не знаю, как снова запустить изображение? Когда выполнить следующую команду:

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

Прогон приложение снова, но в моем Dockerfile я уже написал эту команду. Как запустить изображение без этой команды, и приложение запускается автоматически?

ответ

35

Существует различие между изображениями и контейнерами.

  • Изображения будут строить РАЗ
  • можно начать контейнеры из изображений

В вашем случае:

Изменить изображение:

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

Постройте изображение:

docker build -t imageName . 

Теперь вызвать программу внутри контейнера:

docker run --name myProgram imageName 

Теперь перезапустите программу перезагрузки контейнера:

docker restart myProgram 

Ваша программа изменилась? Перестройте изображение !:

docker rmi imageName 
docker build -t imageName . 
+2

У меня ошибка: «Ошибка: невозможно получить доступ к jarfile /opt/helloworld.jar» !! Должен ли я давать разрешение на банку? –

+0

Вот что со мной произошло: путь к банке неправильный. Вы должны это проверить. – Sam003

+0

меня тоже не удалось из-за относительных имен ... – chenchuk

Смежные вопросы