Přejít na hlavní obsah

Jak vytvořit image docker spring boot

  • Ivona Pavlíček
  • Postupy

Docker je jednou z nejoblíbenějších technologií v oblasti virtualizace a kontejnerizace. Docker poskytuje efektivitu a spolehlivost tím, že umožňuje vývojářům balit aplikace a jejich závislosti do lehkých, přenosných kontejnerů. Jedním z populárních rámců pro vývoj aplikací Java je Spring Boot.

Spring Boot - je to rámec, který usnadňuje vývoj aplikací Java tím, že poskytuje širokou škálu nástrojů a funkcí pro nasazení škálovatelných a stabilních aplikací.

V tomto článku vám řekneme, jak vytvořit image Docker pro aplikace vyvinuté pomocí Spring Boot. Podrobně se podíváme na proces balení aplikace do kontejneru a její nasazení pomocí Dockeru.

Instalace Dockeru do počítače

Chcete-li začít s Dockerem, musíte jej nainstalovat do počítače. Zde je podrobný průvodce:

Krok 1: Přejděte na oficiální web Docker a stáhněte si instalační soubor pro váš operační systém.

Krok 2: Spusťte instalační soubor a postupujte podle pokynů na obrazovce. Vyberte složku pro instalaci Dockeru.

Krok 3: Po instalaci Dockeru jej spusťte, abyste se ujistili, že vše funguje správně. Zkontrolujte, zda se Docker klient spustil bez chyb.

Krok 4: Chcete-li používat Docker bez použití příkazového řádku, nainstalujte grafické rozhraní Docker, jako je Docker Desktop pro Windows nebo Docker Desktop pro Mac.

Krok 5: Zadejte své pověření Docker Hub a vytvořte si účet Docker Hub. To vám umožní ukládat a sdílet vaše Docker obrázky a kontejnery.

Nyní máte v počítači nainstalovaný Docker a jste připraveni začít vytvářet a používat Docker obrázků a kontejnerů!

Načítání obrazu Spring Boot

Proces vytváření a používání obrázků Docker pro aplikace Spring Boot zahrnuje následující kroky:

  1. Vytváření souborů Dockerfile a .dockerignore pro definování nastavení obrazu a vyloučení souborů z kontextu sestavení.
  2. Vytvoření obrazu Docker pomocí příkazu docker build, označující cestu k Dockerfile a značku pro identifikaci obrazu.
  3. Nahrání obrazu do Docker Hub nebo soukromého registru pomocí příkazu docker push.
  4. Načítání obrazu do cílového stroje pomocí příkazu docker pull.

Po nahrání obrazu do cílového stroje můžete kontejner spustit na základě tohoto obrázku pomocí příkazu docker run. Kontejner bude obsahovat všechny potřebné závislosti a nastavení, aby aplikace Spring Boot úspěšně fungovala.

Vytvoření Dockerfile

Chcete-li vytvořit obrázek Docker pro aplikaci Spring Boot, musíte vytvořit a nakonfigurovat soubor Dockerfile. Dockerfile obsahuje pokyny k vytvoření obrazu, jeho konfiguraci a nezbytným závislostem.

Zde je příklad jednoduchého Dockerfile pro Spring Boot:

FROM openjdk:8

ADD target/myproject.jar myproject.jar

# Možnosti, které lze nastavit prostřednictvím argumentů příkazového řádku

ARG SPRING_PROFILES_ACTIVE=prod

ENV SPRING_PROFILES_ACTIVE $SPRING_PROFILES_ACTIVE

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myproject.jar"]

V tomto Dockerfile jsou použity následující pokyny:

FROM: označuje základní obrázek pro nový vzhled, v tomto případě je to openjdk:8.

ADD: kopíruje soubor myproject.jar ze složky target uvnitř obrázku.

ARG: nastaví proměnnou SPRING_PROFILES_ACTIVE, kterou lze přepsat při sestavování bitové kopie pomocí argumentů příkazového řádku.

ENV: nastaví proměnnou prostředí SPRING_PROFILES_ACTIVE na hodnotu proměnné SPRING_PROFILES_ACTIVE.

ENTRYPOINT: nastaví spouštěcí příkaz uvnitř kontejneru.

Po vytvoření Dockerfile je třeba provést příkaz docker build pro sestavení obrazu:

docker build -t myproject .

Kde myproject - název obrázku a tečka znamená aktuální adresář.

Nyní lze obraz Spustit jako kontejner pomocí příkazu docker run:

docker run -p 8080:8080 myproject

Kde -p 8080:8080 nastavuje prostup portů: 8080 pro kontejner a 8080 pro hostitelský stroj, myproject - jméno obrazu.

Nyní bude vaše aplikace Spring Boot spuštěna uvnitř kontejneru Docker a je k dispozici na adrese http://localhost:8080..

Sestavení obrazu Docker

Zde je příklad jednoduchého Dockerfile pro aplikaci Spring Boot:

FROM openjdk:8-jdk-alpineVOLUME /tmpARG JAR_FILECOPY $ app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

* FROM openjdk: 8-jdk-alpine-tento návod označuje základní obrázek, na kterém bude váš obrázek založen. V tomto případě používáme openjdk:8-jdk-alpine, který obsahuje OpenJDK 8 na lehkém OS Alpine Linux.

* VOLUME / tmp - tento pokyn vytváří montážní bod pro dočasné soubory.

* ARG JAR_FILE-tato instrukce definuje argument JAR_FILE, který bude předán při sestavování obrazu. Do tohoto argumentu musíte uvést název souboru JAR.

• COPY $ app.jar-tento Instructable zkopíruje soubor JAR do obrázku a přejmenuje jej na app.jar.

• ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] - tento pokyn určuje vstupní bod pro vaši aplikaci. Ukazuje Docker na příkaz, který chcete spustit aplikaci při spuštění kontejneru.

Chcete-li vytvořit obrázek, Uložte tento Dockerfile do kořenového adresáře vašeho projektu. Otevřete příkazový řádek a přejděte do kořenového adresáře projektu. Poté spusťte následující příkaz:

docker build -t my-spring-boot-app .

Tento příkaz vytvoří obrázek a přiřadí mu název my-spring-boot-app. Zde . označuje aktuální adresář, kde je Dockerfile.

Jakmile je obrázek vytvořen, můžete kontejner spustit na základě tohoto obrázku pomocí příkazu:

docker run -p 8080:8080 my-spring-boot-app

Tento příkaz spouští kontejner na základě obrazu my-spring-boot-app a připojuje port 8080 kontejneru k portu 8080 hostitelského stroje.

Nyní bude vaše aplikace Spring Boot k dispozici na adrese http://localhost:8080.

Spuštění kontejneru

Jakmile vytvoříte obrázek Docker pro aplikaci založenou na Spring Boot, můžeme jej spustit pomocí příkazu docker run . V nejjednodušším případě můžete jednoduše spustit následující příkaz:

docker run -p :

Pokud například chceme spustit bitovou kopii s názvem myapp na hostiteli portu 8080 a kontejner by měl běžet na portu 8080, můžeme spustit následující příkaz:

docker run -p 8080:8080 myapp

To přiváže port 8080 na hostiteli k portu 8080 uvnitř kontejneru a spustí kontejner s obrazem myapp .

Pokud chceme, aby kontejner fungoval na pozadí (detached mode), můžeme přidat příznak-d :

docker run -d -p 8080:8080 myapp

Nyní bude kontejner fungovat v pozadí a budete moci pokračovat v práci v terminálu.

Spuštěné kontejnery můžete zobrazit pomocí příkazu docker ps :

docker ps

Tím se zobrazí seznam spuštěných kontejnerů a můžete vidět informace o každém kontejneru, včetně názvu kontejneru a portu, na kterém běží.

Je důležité poznamenat, že po zastavení kontejneru se změny provedené uvnitř kontejneru neukládají, pokud jste kontejner nakonfigurovali tak, aby ukládal data do externích svazků (volumes).

Konfigurace Dockeru kontejneru

Chcete-li vytvořit obrázek Docker Spring Boot aplikace, musíte vytvořit Dockerfile a nakonfigurovat jeho konfiguraci.

Níže je ukázková konfigurace Dockerfile:

PokynPopis
FROM Nastaví základní obraz pro vytvoření obrazu Docker
WORKDIR Instaluje pracovní adresář uvnitř kontejneru
ADD Kopíruje soubory a adresáře z místního souborového systému do kontejneru
RUN Provádí příkazy uvnitř kontejneru
EXPOSE Označuje potřebu otevření konkrétního portu kontejneru
CMD Určuje příkaz, který bude proveden při spuštění kontejneru
ENTRYPOINT Určuje vstupní bod, kde začíná provádění příkazů v kontejneru

Jakmile vytvoříte Dockerfile a zadáte potřebné pokyny, můžete pomocí příkazu docker build sestavit obrázek Docker a spustit kontejner pomocí příkazu docker run .

Správa a konfigurace kontejneru Docker umožňuje zabalit aplikaci a její závislosti do izolovaného prostředí, což umožňuje snadné nasazení a zoomování aplikace.

Nasazení aplikace Spring Boot v kontejneru Docker

Pro nasazení aplikace Spring Boot v kontejneru Docker je třeba provést několik kroků. V této části se podíváme na hlavní kroky pro vytvoření a spuštění obrazu Docker s aplikací Spring Boot.

  1. Vytvoření Dockerfile prvním krokem je vytvoření Dockerfile, který obsahuje pokyny pro sestavení dockerového obrazu. V Dockerfile je třeba zadat základní obrázek, nastavit všechny závislosti a zkopírovat soubory aplikace do Dockeru.
  2. Sestavení obrazu Docker po vytvoření obrazu Dockerfile je nutné provést příkaz sestavení obrazu Docker. V důsledku provedení tohoto příkazu bude vytvořen obrázek Docker, který obsahuje všechny potřebné závislosti a soubory aplikace.
  3. Po úspěšném sestavení obrazu Docker lze spustit nádobu Docker, ve které bude spuštěna aplikace Spring Boot. Chcete-li spustit kontejner, musíte spustit příkaz docker run a určit port, na kterém bude aplikace k dispozici.
  4. Kontrola stavu aplikace po spuštění kontejneru Docker lze zkontrolovat stav aplikace. Chcete-li to provést, musíte otevřít webový prohlížeč a zadat adresu localhost a Port uvedený při spuštění kontejneru. Pokud je vše správně nakonfigurováno, zobrazí se stránka s aplikací Spring Boot.

V důsledku toho nasazení aplikace Spring Boot v kontejneru Docker umožňuje zjednodušit proces nasazení, zlepšit škálovatelnost a snadnou správu aplikace. Docker poskytuje izolované runtime prostředí a usnadňuje pohyb aplikace mezi různými okolími.

Testování aplikace v Dockeru

Chcete-li otestovat aplikaci v Dockeru, musíte vytvořit obrázek Docker, ve kterém budou nakonfigurovány všechny potřebné komponenty pro provoz aplikace a spuštění testů. Tento obrázek pak bude možné spustit v kontejneru a provést potřebné testy.

Jednou z hlavních výhod testování v Dockeru je izolovanost prostředí. V kontejneru je možné nastavit a replikovat testovací prostředí, které bude totožné s okolím, ve kterém bude aplikace v produkčním prostředí fungovat. To umožňuje identifikovat potenciální problémy a chyby v raných fázích vývoje.

Důležitou součástí testování v Dockeru je nastavení a spuštění kontejneru. K tomu lze použít různé nástroje, jako je Docker Compose nebo Dockerfile, které zadávají všechny potřebné pokyny k vytvoření obrazu a spuštění kontejneru.

Při testování aplikace v Dockeru lze k psaní a spouštění testů použít různé nástroje a rámce. K testování Java aplikací lze například použít JUnit a Spring Boot Test Framework. Pro jiné programovací jazyky existuje také mnoho nástrojů a rámců, které lze použít ve spojení s Dockerem k testování aplikací.

V důsledku toho testování aplikace v Dockeru umožňuje, aby byl proces vývoje softwaru spolehlivější a efektivnější. Použití Dockeru umožňuje izolovat testovací prostředí a usnadňuje proces vývoje a testování aplikace na různých platformách a konfiguracích.

Optimalizace velikosti Dockeru

  • Použijte základní obrázky Alpine Linux nebo BusyBox: Tyto obrázky jsou minimální a obsahují pouze to nejnutnější pro provoz kontejneru. Mají malou velikost a jsou skvělé pro spouštění aplikací na Spring Boot.
  • Ujistěte se, že používáte multi-Stage sestavení: Multi-Stage sestavení umožňuje rozdělit proces sestavení do několika fází, což může výrazně snížit velikost obrazu. Můžete například sestavit aplikaci v jedné vrstvě a poté ji zkopírovat do lehčího základního obrazu pro spuštění.
  • Odstraňte dočasné soubory a mezipaměť: Při sestavování obrazu mohou dočasné soubory a mezipaměť zabírat další místo. Zajistěte, aby v konečném vzhledu nezůstaly. To lze provést například přidáním příkazu ' RUN rm-rf/ tmp / *` nebo `RUN apt-get clean` do Dockerfile.
  • Vyhněte se instalaci a používání nepoužívaných závislostí: Analyzujte své závislosti a ujistěte se, že používáte pouze funkce knihovny a komponenty potřebné k provozu aplikace. Vyhněte se instalaci nepoužívaných balíčků, abyste předešli tomu, že obrázky budou mít nadváhu.
  • Při sestavování použijte strategie ukládání do mezipaměti: Docker umožňuje ukládání do mezipaměti při sestavování obrázků. Použijte jej moudře, abyste se vyhnuli opětovnému nastavení a načítání závislostí při každém sestavení.
  • Nastavte minimální sadu závislostí: Při instalaci závislostí pro vaši aplikaci zadejte pouze požadované verze. Neinstalujte všechny možné závislosti, i když jsou nezbytné pro některé funkce.

Použití těchto tipů sníží velikost obrazu Docker a zlepší výkon aplikace v kontejneru. Tyto optimalizace použijte při vytváření obrázků pro vaše aplikace Spring Boot.