![[Docker] Spring Boot 프로젝트를 Docker 이미지로 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbildfW%2FbtsJf9rxiyR%2FmziByYQTYe7PRQ6v19Fv3k%2Fimg.webp)
[Docker] Spring Boot 프로젝트를 Docker 이미지로 만들기DevOps/Docker2024. 8. 25. 18:27
Table of Contents
DockerFile 작성
생성한 도커파일에 아래와 같은 내용을 작성해준다.
FROM eclipse-temurin:17-jre-alpine WORKDIR /spring-boot COPY build/libs/*SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "/spring-boot/app.jar"] |
- FROM eclipse-temurin:17-jre-alpine
-Docker 이미지를 생성할 때 기본으로 사용할 베이스 이미지를 설정하는 명령어이다.
-이 경우, eclipse-temurin:17-jre-alpine 이미지를 사용하여 JRE 17이 설치된 환경에서 애플리케이션을 실행할 수 있도록 한다. - WORKDIR /spring-boot
-Docker 컨테이너 내에서 작업 디렉토리를 /spring-boot로 설정한다. 이후의 모든 명령어는 이 디렉토리 내에서 실행된다. 이 디렉토리가 존재하지 않으면 자동으로 생성된다. - COPY build/libs/*SNAPSHOT.jar app.jar
-호스트 컴퓨터의 build/libs/ 경로에 있는 *SNAPSHOT.jar 파일을 Docker 컨테이너의 /spring-boot/ 디렉토리에 app.jar 파일로 복사한다.
-build/libs/에 *SNAPSHOT.jar 파일이 존재해야 한다. - ENTRYPOINT ["java", "-jar", "/spring-boot/app.jar"]
-Docker 컨테이너가 시작되면 java -jar /spring-boot/app.jar 명령어가 실행된다.
-이 명령어는 Spring Boot 애플리케이션을 실행시킨다.
이 Dockerfile은 eclipse-temurin:17-jre-alpine을 기반으로 한 자바 애플리케이션을 Docker 컨테이너에서 실행하기 위한 설정이다.
애플리케이션의 빌드 결과물인 SNAPSHOT.jar 파일을 컨테이너로 복사하고, 컨테이너가 시작될 때 해당 파일을 자바 명령어로 실행하는 방식이다.
스프링 부트 프로젝트 빌드
./gradlew clean build
DockerFile 이미지 빌드
docker build -t hello-server .
실제 리눅스에 컨테이너를 띄우려면
이 도커 파일은 사용자 컴퓨터 환경에 맞게 빌드된다.
즉 MAC(Apple Silicon)의 경우 ARM 아키텍쳐로 빌드된다.
하지만 프로덕션 환경의 리눅스는 AMD인 경우가 많기 때문에 아래와 같이 빌드해야 한다.
docker build --platform linux/amd64 -t hello-server .
docker build
- 현재 디렉토리에 있는 Dockerfile을 기반으로 Docker 이미지를 빌드하는 명령어이다.
- Dockerfile에 정의된 명령어들이 순서대로 실행되어 최종적으로 새로운 이미지가 만들어진다.
-t hello-server
- 빌드된 이미지를 태그하는 옵션이다. -t 옵션 뒤에 hello-server라는 이름을 이미지에 붙여준다.
- 즉, 빌드된 이미지는 hello-server라는 이름으로 저장되며, 이 이름을 사용해 나중에 컨테이너를 실행할 수 있다.
- 태그는 name:tag 형식으로 사용되며, 여기서는 tag 부분이 생략되어 latest로 기본 설정된다. 즉, 이 이미지는 hello-server:latest로 태그된다.
. (점)
• Docker 빌드 명령어에서 마지막에 오는 .은 Dockerfile을 포함한 컨텍스트의 경로를 나타낸다.
• 여기서 .은 현재 디렉토리를 의미하며, 이 디렉토리에서 Dockerfile을 찾아 이미지를 빌드하게 된다.
결론적으로, 이 명령어는 현재 디렉토리에 있는 Dockerfile을 기반으로 Docker 이미지를 빌드하고, 해당 이미지를 hello-server라는 이름으로 태그한다.
이미지가 정상적으로 생성되었는지 확인
docker image ls
도커 이미지가 성공적으로 생성된 것을 확인할 수 있다.
5. 생성한 이미지를 컨테이너로 실행
docker run -d -p 8080:8080 hello-server
'DevOps > Docker' 카테고리의 다른 글
[Docker] MySQL 이미지 빌드 (1) | 2024.09.08 |
---|---|
[Docker] 이미지 레지스트리 (3) | 2024.09.07 |
[Docker] 이미지와 컨테이너 (0) | 2024.09.06 |
[Docker] 하이퍼바이저 및 컨테이너 가상화와 도커 아키텍쳐 (0) | 2024.09.05 |
[Docker] Docker를 이용한 AWS EC2에 배포 (0) | 2024.08.27 |