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
Mam nadzieję, że się szybko „rozrośniesz”. Kawał dobrej roboty ! 🙂
Dzięki za super komentarz! 😉