Kurs Java

Budowanie obrazu aplikacji Java

Obraz Dockera to szablon, który służy jako podstawa do tworzenia kontenerów. Zawiera wszystko, co potrzebne do uruchomienia aplikacji: kod, środowisko uruchomieniowe, biblioteki, zmienne środowiskowe i pliki konfiguracyjne.

Docker Hub dostarcza wiele gotowych obrazów, lecz to budowanie własnych obrazów zapewnia pełną kontrolę nad środowiskiem operacyjnym aplikacji. W procesie tworzenia spersonalizowanych obrazów Dockera często wykorzystuje się predefiniowane obrazy bazowe, które mogą zawierać na przykład zainstalowaną Javę lub serwer HTTP. Dzięki temu można skutecznie dostosować i skonfigurować środowisko, aby idealnie pasowało do unikalnych wymagań i potrzeb konkretnej aplikacji.

Jeśli zamierzasz stworzyć mikroserwis, naturalnym krokiem będzie chęć uruchomienia wielu jego instancji. Aby to osiągnąć, niezbędne jest zbudowanie obrazu Dockera dla tego mikroserwisu. Taki obraz powinien być oparty na Javie oraz frameworku Spring Boot, co zapewni elastyczność oraz łatwość w skalowaniu. Wykorzystanie Dockera w tym kontekście pozwala na łatwe replikowanie środowiska mikroserwisu i jego niezależne uruchamianie w różnych środowiskach - od deweloperskiego po produkcyjne. W rezultacie, Docker staje się kluczowym narzędziem w procesie wdrażania nowoczesnych architektur mikroserwisowych.

Dockerfile w projekcie Spring Boot

Załóżmy, że masz projekt Java, który jest aplikacją webową wykorzystujacą Spring Boot-a. Na przykład tworzysz aplikację do zarządzania zdarzeniami sportowymi: sporting-events (nazwa robocza spring-boot-3-web).

Chcąc uruchomić taką aplikację w kontenerze Docker, musisz najpierw przygotować obraz, który będzie działał na Javie. Załóżmy, że odpowiednia wydaje Ci się Java 21, co oznacza, że potrzebujesz obrazu bazowego z SDK Java 21.

W celu przygotowania własnego obrazu tworzysz w projekcie plik Dockerfile, który aby spełniał Twoje założenia, powinien na samym początku określać oficjalny obraz Docker, który będący obrazem bazowym:
Komunikacja Fronted - Backend
Oto co znajduje się w naszym Dockerfile:
  • FROM eclipse-temurin:21.0.1_12-jdk — Rozpoczyna budowanie obrazu od pobrania i użycia oficjalnego obrazu Java, konkretnie używa wersji eclipse-temurin z JDK (Java Development Kit) w wersji 21.0.1_12. Jest to obraz bazowy zawierający wszystko, co potrzebne do uruchomienia aplikacji Java.
  • WORKDIR /app — Ustawia /app jako katalog roboczy w kontenerze. Oznacza to, że wszystkie późniejsze komendy będą wykonywane z tego katalogu, a także to, że będzie to domyślny katalog, w którym będą znajdować się wszystkie pliki skopiowane do kontenera.
  • COPY ./target/spring-boot-3-web-0.0.1-SNAPSHOT.jar /app — Kopiuje plik spring-boot-3-web-0.0.1-SNAPSHOT.jar z lokalnego katalogu target (czyli tego, w którym znadują się skompilowane źródła) do katalogu /app w kontenerze. Ten plik JAR zawiera skompilowaną aplikację Java, gotową do uruchomienia.
  • CMD ["java", "-jar", "spring-boot-3-web-0.0.1-SNAPSHOT.jar"] — Określa polecenie, które zostanie wykonane, gdy kontener zostanie uruchomiony. W tym przypadku jest to polecenie uruchamiające aplikację Java, używając pliku JAR skopiowanego w poprzednim kroku. Innymi słowy, zaraz po starcie kontenera, uruchomi się aplikacja Spring Boot.
Podsumowując, ten Dockerfile tworzy obraz kontenera, który bazuje na oficjalnym obrazie Java z JDK, ustawia katalog roboczy, kopiuje skompilowany plik JAR aplikacji do tego katalogu i określa polecenie do uruchomienia tej aplikacji w kontenerze.

Budowanie obrazu aplikacji

W celu zbudowania nowego obrazu Dockera o nazwie sporting-events w oparciu o instrukcje z pliku Dockerfile znajdującego się w bieżącym katalogu, używa się polecenia docker build. Polecenie to inicjuje proces tworzenia obrazu, gdzie -t sporting-events nadaje obrazowi nazwę, a kropka . wskazuje Dockerowi, że ma użyć bieżącego katalogu jako kontekstu budowania. Zauważ, że katalogiem tym jest główny katalog Twojego projektu.
Komunikacja Fronted - Backend
Przygotowanie obrazu może trwać kilka sekund, ale czas ten w dużym stopniu zależy od dostępnych zasobów Twojego systemu. Jeżeli nie dysponujesz około 1 GB wolnej pamięci, proces ten może zakończyć się zawieszeniem. W takim przypadku zaleca się zwolnienie pamięci, ponowne uruchomienie Docker Desktop i zbudowanie obrazu jeszcze raz.

Po wykonaniu procesu budowania, przejdź do sekcji "Images" w Docker Desktop. Powinieneś tam zobaczyć swój nowo utworzony obraz:
Komunikacja Fronted - Backend
Zwróć uwagę, że status obrazu jest ustawiony na Unused, co oznacza, że nie uruchomiłeś jeszcze żadnego kontenera na jego bazie. Zauważ też, że rozmiar obrazu to blisko 500 MB, co jest spowodowane głównie tym, że oprócz okrojonej wersji Linuxa, znajduje się tam również SDK Javy.

Pamiętaj, że możesz otrzymać te same informacje, uruchamiając z konsoli komendę docker images:
Komunikacja Fronted - Backend
Appa Notka. To ważne, aby umieć korzystać z komend Dockera w konsoli, nawet jeśli na co dzień używasz Docker Desktop. Prędzej czy później, podczas swojej pracy z Dockerem, będziesz musiał zarządzać obrazami w zdalnym środowisku unixowym, gdzie nie będzie dostępnego interfejsu graficznego.
Kod projektu spring-boot-3-web znajdziesz na naszym GitHubie — javappa-coding/coding-lab
Appa Notka. Analizujemy kolejne kursy na Udemy, wykorzystując nasze doświadczenie zawodowe do oceny ich efektywności i popularności wśród uczestników. Z dużym zaangażowaniem selekcjonujemy te, które naszym zdaniem są najbardziej efektywne i jednocześnie cieszą się uznaniem uczestników.
Kurs Docker & Kubernetes: The Practical Guide [2023 Edition] jest efektem tej głębokiej analizy i prezentuje idealne połączenie wysokiej jakości edukacyjnej z aktualnymi trendami i wymaganiami rynkowymi.
Zdjęcie autora
Autor: Jarek Klimas
Data: 04 stycznia 2024
Labele: Backend, Poziom średniozaawansowany, Java
Topowe Materiały
Docker: Home Page
Docker: Downlaoad and install
Docker: Get Started with Docker
Docker: Kickstart Your Spring Boot Application Development

Spring IO: Container Images
Spring IO: Spring Boot Docker

Baeldung: Docker Guide
Baeldung: Creating Docker Images with Spring Boot
Baeldung: Introduction to Docker Compose
Baeldung: Docker Compose Support in Spring Boot 3

Udemy: Docker od podstaw - dla programistów i nie tylko
Udemy: Docker & Kubernetes: The Practical Guide [2023 Edition]

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE