w ,

FajneFajne

Nowe podejście do budowy obrazów Dockera w Spring Boot 2.3

Docker i Spring Boot z wykorzystaniem Buildpacks

Nowa wersja Spring Boot 2.3 wprowadza nowe narzędzia, przez które tworzenie obrazów dla Dockera staje się jeszcze prostsze. Od teraz można wykorzystywać Buildpacks do tworzenia obrazów zgodnych z Docker.

Cloud Native Buildpacks

To projekt, który powstał przy współpracy Pivotal (firmy odpowiedzialnej za Spring Framework) i Heroku (popularnej platformie PaaS). Buildpacks to narzędzie, które umożliwia na stworzenie środowiska wykonywanego dla aplikacji wraz z jej wszystkimi niezbędnymi zależnościami.

Na przykład Heroku stosuje to podejście od dawna – po wrzuceniu aplikacji .jar platforma sama jest w stanie dociągnąć JRE, które jest niezbędne do uruchomienia. Tak samo działa to w przypadku wrzucenia aplikacji napisanych w innych językach.

Niestety to rozwiązanie było uzależnione od platformy. Firma Pivotal włożyła wiele starań, aby uniezależnić rozwiązanie od platformy i tak powstał Cloud Native Buildpacks.

Cloud Native Buildpacks funkcjonuje w Spring Boot 2.3 i od tej wersji możemy w bardzo łatwy korzystać z jego dobrodziejstw.

Spring Boot i Dockerfile

Najpopularniejszym sposobem budowy obrazu było wykreowanie pliku Dockerfile w ramach, którego opisywaliśmy w jaki sposób uruchomić aplikacje. To podejście również przedstawiłem na moim blogu we wpisie Docker – budowa obrazu dla aplikacji w Spring Boot.

Podejście to jednak miało dwa zasadnicze problemy:

  • po każdej aktualizacji musimy spakować aplikacji do pliku wykonywalnego;
  • obraz zawiera informacje o środowisku uruchomienieowym dla aplikacji, co może być problematyczne w przypadku aktualizacji framerowka z którym pracujemy.

Spring Boot 2.3 i Buildpacks – przykład

Samo wykorzystanie Buildpacks jest bardzo proste, sprowadza się do wywołania polecenia:

mvn spring-boot:build-image

Opcjonalnie możemy również dodać nazwę dla naszego obrazu:

mvn spring-boot:build-image -Dspring-boot.build-image.imageName=byku-app
Zbudowanie obrazu i uruchomienie go z wykorzystaniem BuildPacks
Rezultat wykonania operacji, wraz z uruchomieniem obrazu

Cloud Native Buildpacks w poradniku wideo

Zapraszam Cię też na mój kanał YouTube, gdzie pokazuje w praktyce jak osiągnąć opisywany rezultat w praktyce:

Docker i Spring Boot z wykorzystaniem Buildpacks

Docker i Spring Boot – wnioski

Podsumowując – znane nam podejście budowy obrazów w oparciu o Dockerfile jest łatwo zarządzane i dokumentowane. Dlatego w zależności od złożoności aplikacji możemy wykorzystać wybrane podejście. Na pewno rozwiązanie z wykorzystaniem Cloud Native Buildpacks sprawdzi się przy małych aplikacjach.

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Jenkins

Jenkins – zautomatyzuj swoją pracę + ranking popularności CI/CD

maven i gradle

Maven i Gradle – porównanie narzędzi i ich wydajności