반응형
Table of Contents
1. 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 파일을 컨테이너로 복사하고, 컨테이너가 시작될 때 해당 파일을 자바 명령어로 실행하는 방식이다.
2. 스프링 부트 프로젝트 빌드
./gradlew clean build

3. 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라는 이름으로 태그한다.

4. 이미지가 정상적으로 생성되었는지 확인
docker image ls

도커 이미지가 성공적으로 생성된 것을 확인할 수 있다.
5. 생성한 이미지를 컨테이너로 실행
docker run -d -p 8080:8080 hello-server

반응형
'[AWS-FRF] > CICD' 카테고리의 다른 글
| RUN npm install 이란? (0) | 2025.11.04 |
|---|---|
| clean package -DskipTests 정의 !! (1) | 2025.11.04 |
| [참고][Docker] 스프링부트 프로젝트 도커 이미지(Image) 만들고 실행하기 !! (0) | 2025.11.03 |
| [참고][Docker] Dockerfile 작성법 !! (Jar파일 실행 이미지 만들기) (1) | 2025.11.03 |
| [참고] Jenkins를 활용한 CI/CD 파이프라인 구축 (GitHub → Docker → ECR 업로드) (1) | 2025.10.30 |
| [docker builder prune] Docker 빌드 캐시(build cache) 및 중간 이미지 정리!! (1) | 2025.10.29 |
| [참고][Jenkins] Docker build 후 Amazon ECR로 이미지 업로드하기 !! (0) | 2025.10.29 |
| [참고][AWS][Jenkins] 변경된 설정을 이력으로 남기기 (config history)!! (8) | 2025.01.21 |
댓글