728x90
Spring Boot 프로젝트를 도커 이미지로 빌드하고 도커 컨테이너로 실행하는 방법
1. Dockerfile 파일 생성
프로젝트 루트 디렉토리에 Dockerfile을 생성합니다. 이 파일은 도커 이미지를 빌드하는 데 사용됩니다. Dockerfile 내용은 아래와 같이 기본적으로 설정할 수 있습니다.
cd demo
vim Dockerfile
FROM openjdk:18-jdk-alpine AS builder
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .
COPY src src
RUN chmod +x ./gradlew
RUN ./gradlew bootJAR
FROM openjdk:18-jdk-alpine
COPY --from=builder build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
**로컬 PC에 docker 엔진이 구성한 상태에서 docker build를 실행합니다.
2. 도커 이미지 빌드
터미널에서 프로젝트 루트 디렉토리로 이동한 후 다음 명령을 실행하여 도커 이미지를 빌드합니다.
docker build -t deploy-demo:0.0.1 .
$ docker build -t deploy-demo:0.0.1 .
[+] Building 105.9s (15/15) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 342B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/openjdk:18-jdk-alpine 2.4s
=> [auth] library/openjdk:pull token for registry-1.docker.io 0.0s
=> CACHED [builder 1/8] FROM docker.io/library/openjdk:18-jdk-alpine@sha256:e5c5b35b831a4f655074a25604130ce53e33567b82c8a7204f0e5641b66d477e 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 72.09kB 0.0s
=> [builder 2/8] COPY gradlew . 0.0s
=> [builder 3/8] COPY gradle gradle 0.0s
=> [builder 4/8] COPY build.gradle . 0.0s
=> [builder 5/8] COPY settings.gradle . 0.0s
=> [builder 6/8] COPY src src 0.0s
=> [builder 7/8] RUN chmod +x ./gradlew 0.4s
=> [builder 8/8] RUN ./gradlew bootJAR 102.2s
=> [stage-1 2/2] COPY --from=builder build/libs/*.jar app.jar 0.1s
=> exporting to image 0.1s
=> => exporting layers 0.1s
=> => writing image sha256:992f1de38c475e47ad76598ef86bedda8e29ad9b7b76853f6daecaa2a8c1d5dd 0.0s
=> => naming to docker.io/library/deploy-demo:0.0.1 0.0s
728x90
- 도커 이미지 확인(deploy-test:0.0.1)
docker images --filter=reference='deploy-test:0.0.1'
$ docker images --filter=reference='deploy-test:0.0.1'
REPOSITORY TAG IMAGE ID CREATED SIZE
deploy-test 0.0.1 5e5ebd4fe080 20 hours ago 346MB
3. 도커 컨테이너 실행
도커 이미지를 성공적으로 빌드한 후, 다음 명령을 사용하여 도커 컨테이너를 실행합니다.
docker run -d -p 8080:8080 --name deploy-demo deploy-demo:0.0.1
$ docker run -d -p 8080:8080 --name deploy-demo deploy-demo:0.0.1
6aa584edba49a0283540cf403b48c41c036e3ece3306207d98483559c69a77c9
- 도커 컨테이너 로그
docker logs -f deploy-demo
$ docker logs -f deploy-demo
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.2)
2021-12-27 09:34:45.125 INFO 1 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 18-ea on 6aa584edba49 with PID 1 (/app.jar started by root in /)
2021-12-27 09:34:45.164 INFO 1 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
2021-12-27 09:34:49.237 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-12-27 09:34:49.282 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-12-27 09:34:49.284 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56]
2021-12-27 09:34:49.427 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-12-27 09:34:49.427 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3932 ms
2021-12-27 09:34:50.447 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-12-27 09:34:50.476 INFO 1 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 6.633 seconds (JVM running for 7.509)
4 웹 브라우저에서 접속
도커 컨테이너가 실행되었으면 웹 브라우저에서 http://localhost:8080 또는 해당 호스트 및 포트로 액세스하여 Spring Boot 애플리케이션을 확인할 수 있습니다.
http://localhost:8080
- (또는) CLI에서 curl 명령어로 웹 페이지 테스트
curl -s localhost:8080
$ curl -s localhost:8080
Hello, World!
Spring Boot 프로젝트를 도커 이미지로 빌드하고 도커 컨테이너로 실행할 수 있습니다. 도커를 사용하면 개발 환경을 격리하고 애플리케이션을 쉽게 배포하고 관리할 수 있습니다.
728x90
'리눅스' 카테고리의 다른 글
[리눅스] Spring Boot(Gradle) 빌드 및 배포 구현(github, jenkins, dockerhub) (0) | 2021.12.28 |
---|---|
[Spring Boot] 도커 이미지 빌드 및 도커 이미지 docker hub로 push (0) | 2021.12.27 |
jenkins log4j 2(CVE-2021-44228) 취약점 확인 (0) | 2021.12.25 |
[리눅스] 그래들(Gradle)로 스프링 부트 빌드(Build)하기 (0) | 2021.12.25 |
[draft] Docker를 privileged 모드로 실행하는 방법 (0) | 2021.12.24 |