Как обновить приложение, запущенное в Docker-контейнере?(например, пружинный ботинок) - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь выяснить докер в сотый раз.Теперь я создаю spring-boot простое приложение и создаю docker image для него:

FROM openjdk:8
EXPOSE 8080
ADD /build/libs/hello-docker-0.0.1-SNAPSHOT.jar hello-docker.jar
ENTRYPOINT ["java", "-jar", "hello-docker.jar"]

Что я делал шаг за шагом:

1) Создайте свое приложение (в результате моеhello-docker-0.0.1-SNAPSHOT.jar появился в папке build)

2) перемещен в каталог, где расположен Docker file и выполнил команду: docker build -f Dockerfile -t springdocker .

3) Запустите этот image как контейнер: docker run -p 8080:8080 springdocker

В результате мое приложение успешно запустилось.

Но теперь я решил что-то изменить в своем приложении.Я сделал это и попытался повторить все шаги.1-> 2-> error

На 2 степа было создано новое изображение, а старое было в активном состоянии.Оказывается, мне нужно остановить старый и запустить новый.

это не удобно.Я интуитивно понимаю, что это не так, как это должно работать.Я не понимаю, как правильно обновить контейнер.Я постоянно меняю свое приложение, и если мне нужно остановить контейнер, создать изображение и запустить его - это не удобство, а сложность.С таким же успехом я могу остановить свое приложение и запустить новое без докера.Я понимаю, что не понимаю, как это работает, и я хочу, чтобы кто-то объяснил мне, как это сделать.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы должны автоматизировать процесс сборки.Если желаемым результатом этого процесса является образ Docker, ваш процесс автоматической сборки не должен останавливаться после создания .jar

К счастью, есть хорошее руководство по созданию образа Docker для запуска приложения Spring Boot с использованием различныхинструменты сборки (Maven, Gradle): https://spring.io/guides/gs/spring-boot-docker/

В конце вы сможете развернуть свое приложение в образ докера, используя всего лишь

./mvnw install dockerfile:build
0 голосов
/ 31 января 2019

Вы можете использовать docker-compose, это сэкономит вам много времени.

Просто напишите файл docker-compose.yml в той же папке, что и Dockerfile:

version: '3.5'
services:
  yourapplication:
    build: . -> this is the location of your dockerfile
    image: yourapplication_imagename
    container_name: yourapplication_containername
    ports:
       - "8080:8080"
    tty: true

И, чтобы обновить приложение, вам нужно только запустить:

docker-compose build --no-cache yourapplication
docker-compose up -d

Это воссоздает изображение и заменяет контейнер обновленным приложением.

Без docker-compose: у вас уже есть хорошая ветка об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...