Spring Boot & Docker – szybki start

Spring Boot & Docker – szybki start

Ten wpis ma na celu zaprezentowanie w jaki sposób uruchomić aplikację napisaną z użyciem Spring Boota w kontenerze. Utworzony obraz wyślemy na platformę Docker Hub! Zanim jednak zaczniesz czytać ten wpis polecam zapoznać Ci się z moim poprzednim wpisem:

Do dzieła – tworzymy przykładową aplikację Spring Boot! Za pomocą https://start.spring.io/ wygenerowałem projekt wybierając jedynie zależność do:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

W głównym katalogu projektu tworzymy plik tekstowy Dockerfile (plik który opisuje jak ma wyglądać obraz) z następującą zawartością:

FROM <span class="st"><em>openjdk</em>:<em>13</em>-<em>alpine</em></span>
ADD target/quick-start-dockerfile-0.0.1-SNAPSHOT.jar quick-start-dockerfile-0.0.1-SNAPSHOT.jar
EXPOSE 9090
ENTRYPOINT ["java", "-jar", "quick-start-dockerfile-0.0.1-SNAPSHOT.jar"]
  • FROM – obraz z którego budujemy kontener – https://hub.docker.com/_/openjdk/
  • EXPOSE – port udostępniony przez kontener,
  • ADD – dodajemy plik *.jar do kontenera,
  • ENTRYPOINT – uruchamiamy dodany plik *.jar.

Zanim zbudujemy obraz upewnijmy się czy Docker jest prawidłowo zainstalowany poleceniem:

docker -v

przykładowy wynik:

Docker version 18.09.7, build 2d0083d

Budujemy wynikowy obraz:

docker build -f Dockerfile -t mwarycha/kubernetes:quick-start-dockerfile-tag .

gdzie:

  • f – wskazujemy plik Dockerfile (domyślnie szukany w aktualnej lokalizacji)
  • t – dodajemy taga dla obrazu gdzie mwarycha/kubernetes to nazwa mojego repozytorium na platformie Docker Hub a quick-start-dockerfile-tag to nazwa taga dla tworzonego obrazu,
  • . – wskazujemy katalog z którego wynikowa paczka ma zostać zbudowana – w tym przypadku jest to obecny katalog.

wynik:

Sending build context to Docker daemon  17.82MB
Step 1/4 : FROM openjdk:8-jre-alpine
8-jre-alpine: Pulling from library/openjdk
e7c96db7181b: Pull complete
f910a506b6cb: Pull complete
b6abafe80f63: Pull complete
Digest: sha256:f362b165b870ef129cbe730f29065ff37399c0aa8bcab3e44b51c302938c9193
Status: Downloaded newer image for openjdk:8-jre-alpine
 ---> f7a292bbb70c
Step 2/4 : ADD target/quick-start-dockerfile-0.0.1-SNAPSHOT.jar quick-start-dockerfile-0.0.1-SNAPSHOT.jar
 ---> 9832946d5958
Step 3/4 : EXPOSE 9090
 ---> Running in 587001366ee8
Removing intermediate container 587001366ee8
 ---> 6016716450b5
Step 4/4 : ENTRYPOINT ["java", "-jar", "quick-start-dockerfile-0.0.1-SNAPSHOT.jar"]
 ---> Running in 57310a86f6d2
Removing intermediate container 57310a86f6d2
 ---> dd2f47bdb5ec
Successfully built dd2f47bdb5ec
Successfully tagged mwarycha/kubernetes:quick-start-dockerfile-tag

weryfikacja:

docker images

wynik:

REPOSITORY            TAG                          IMAGE ID            CREATED              SIZE
mwarycha/kubernetes   quick-start-dockerfile-tag   dd2f47bdb5ec        About a minute ago   102MB

testujemy utworzony obraz:

docker run -p 9090:8080 mwarycha/kubernetes:quick-start-dockerfile-tag

wynik:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)
 
 
...
2020-02-04 19:35:08.420  INFO 1 --- [main] p.j.q.QuickStartDockerfileApplication : Started QuickStartDockerfileApplication in 19.947 seconds (JVM running for 22.503)

gdzie:

9090 – port udostępniany przez kontener,

8080 – port aplikacji Spring Boot.

Utworzony obraz zamieszczamy na platformie Docker Hub!

Logujemy się do platformy:

docker login --username=login

gdzie login – twój login na Docker Hub.

wynik:

Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 
Login Succeeded

wysyłamy obraz:

docker push login/kubernetes:quick-start-dockerfile-tag

wynik:

uruchomienie kontenera z projektem na podstawie pobranego obrazu z platformy Docker Hub:

docker pull login/kubernetes:quick-start-dockerfile-tag

Zobacz kod na GitHubie i zapisz się na bezpłatny newsletter!

.

Zobacz też film na YouTube!

2 Comments

  1. Mam nadzieję, że się szybko „rozrośniesz”. Kawał dobrej roboty ! 🙂

Leave a comment

Your email address will not be published.


*