리셋 되지 말자

[dockerizing] jar파일을 이용해 도커 컨테이너에서 스프링 실행하기 본문

Spring

[dockerizing] jar파일을 이용해 도커 컨테이너에서 스프링 실행하기

kyeongjun-dev 2021. 4. 9. 18:50

docker run으로 스프링 실행

docker run --rm -it -p 8080:8080 -v C:\Users\hello-spring\build\libs:/home/user --name spring openjdk:11.0.10-jre-slim-buster java -jar /home/user/hello-spring-0.0.1-SNAPSHOT.jar

jar 파일이 있는 곳에서 위의 명령어를 실행한다.

 

--rm

컨테이너가 종료되면, stop 상태가 아닌 바로 삭제되도록 한다.

 

-it

스프링이 잘 실행되는지 포그라운드에서 바로 확인할 수 있도록 옵션 설정

 

-p 8080:8080

호스트의 8080포트와 컨테이너의 8080포트를 연결

 

-v C:\Users\hello-spring\build\libs:/home/user

-v 옵션으로 현재 위치와 컨테이너의 /home/user 디렉토리를 마운트 한다. (컨테이너의 /home/user 디렉토리 안에 jar 파일이 위치하게 됨)

 

--name spring

컨테이너 이름을 spring으로 설정

 

openjdk:11.0.10-jre-slim-buster

jre-slim-buster 이미지 사용. 그냥 11.0.10 이미지는 크기가 후덜덜하게 큼...

 

java -jar /home/user/hello-spring-0.0.1-SNAPSHOT.jar

jar파일을 이용해 스프링을 시작하는 명령어 부분.
jar 파일이 /home/user 디렉토리에 있으므로, 절대 경로를 지정하여 스프링 실행

 

 

Dockerfile로 실행

$ ls
Dockerfile  hello-spring-0.0.1-SNAPSHOT.jar

jar 파일이 있는 곳에 Dockerfile 작성 시작

 

$ cat Dockerfile
# 베이스 이미지 지정
FROM openjdk:11.0.10-jre-slim-buster

# 디렉토리 생성 및 이동
WORKDIR /home/user

# jar파일 복제
COPY hello-spring-0.0.1-SNAPSHOT.jar /home/user

# jar파일 실행
CMD java -jar /home/user/hello-spring-0.0.1-SNAPSHOT.jar

Dockerfile 내용

 

$ docker build -t my-spring:0.1 .
$ docker images
REPOSITORY                      TAG                       IMAGE ID       CREATED              SIZE
my-spring                       0.1                       9bc44395c252   About a minute ago   238MB

이미지 빌드 및 생성된 이미지 확인

 

$ docker run -it -p 8080:8080 --name spring my-spring:0.1

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.9.RELEASE)

2021-04-09 09:48:17.162  INFO 8 --- [           main] h.hellospring.HelloSpringApplication     : Starting HelloSpringApplication on 35eef310e403 with PID 8 (/home/user/hello-spring-0.0.1-SNAPSHOT.jar started by root in /home/user)
2021-04-09 09:48:17.166  INFO 8 --- [           main] h.hellospring.HelloSpringApplication     : No active profile set, falling back to default profiles: default
2021-04-09 09:48:18.229  INFO 8 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-04-09 09:48:18.245  INFO 8 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-04-09 09:48:18.246  INFO 8 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.43]
2021-04-09 09:48:18.325  INFO 8 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-04-09 09:48:18.325  INFO 8 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1068 ms
2021-04-09 09:48:18.534  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-04-09 09:48:18.633  INFO 8 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2021-04-09 09:48:18.767  INFO 8 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-04-09 09:48:18.782  INFO 8 --- [           main] h.hellospring.HelloSpringApplication     : Started HelloSpringApplication in 2.231 seconds (JVM running for 2.79)

실행 성공

'Spring' 카테고리의 다른 글

[Spring Boot] Gradle - Hello World  (0) 2022.12.19
[인텔리제이] 유용한 단축키 정리  (0) 2021.04.10
[빌드] jar 파일 빌드  (0) 2021.04.09
[라이브러리] test  (0) 2021.03.22
[라이브러리] logging  (0) 2021.03.22
Comments