1. DockerFile 작성
생성한 도커파일에 아래와 같은 내용을 작성해준다.
FROM openjdk:17-jdk
WORKDIR /spring-boot
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/spring-boot/app.jar"]
- FROM openjdk:17-jdk
-Docker 이미지를 생성할 때 기본으로 사용할 베이스 이미지를 설정하는 명령어이다.
-이 경우, openjdk:17-jdk 이미지를 사용하여 JDK(Java Development Kit) 17이 설치된 환경에서 애플리케이션을 실행할 수 있도록 한다.
-OpenJDK는 자바 애플리케이션을 실행하는 데 필요한 런타임 환경을 제공한다. - 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은 OpenJDK 17을 기반으로 한 자바 애플리케이션을 Docker 컨테이너에서 실행하기 위한 설정이다. 애플리케이션의 빌드 결과물인 SNAPSHOT.jar 파일을 컨테이너로 복사하고, 컨테이너가 시작될 때 해당 파일을 자바 명령어로 실행하는 방식이다.
2. 스프링 부트 프로젝트 빌드
./gradlew clean build
3. DockerFile 이미지 빌드
docker build -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
'Cloud > Docker' 카테고리의 다른 글
[Docker] 이미지 레지스트리 (3) | 2024.09.07 |
---|---|
[Docker] 이미지와 컨테이너 (0) | 2024.09.06 |
[Docker] 하이퍼바이저 및 컨테이너 가상화와 도커 아키텍쳐 (0) | 2024.09.05 |
[Docker] Docker를 이용한 AWS EC2에 배포 (0) | 2024.08.27 |
[Docker] Docker Compose를 이용한 SpringBoot + MySQL + Redis 컨테이너 동시에 띄우기 (0) | 2024.08.26 |