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)
실행 성공