DevOps/Docker

IntelliJ에서 Spring boot 프로젝트 Docker 사용해보기 (기본예제)

딩코딩 2023. 9. 2. 17:36

1. intelliJ Docker Plugin 설치 ( ctrl + alt+ s )

2. bootJar 빌드하기

 

3. 루트 폴더에 Dockerfile 생성

 

2. Dockerfile 작성

## 이 부분은 사용할 Java 버전을 지정합니다. 여기서는 Alpine Linux 기반의 OpenJDK 17 이미지를 사용하고 있습니다.
FROM openjdk:17-alpine 

## Docker 빌드 중에 사용될 변수를 정의합니다. 
ARG JAR_FILE=/build/libs/*.jar

## 앞에서 정의한 ${JAR_FILE} 변수에 해당하는 JAR 파일을 컨테이너 내부의 /app.jar 경로에 복사합니다. 이를 통해 애플리케이션 JAR 파일을 컨테이너 내부로 가져옵니다.
COPY ${JAR_FILE} app.jar

## 컨테이너가 8080 포트에서 애플리케이션을 실행한다고 Docker에 알려줍니다. 이렇게 하면 Docker 외부에서 컨테이너의 8080 포트에 액세스할 수 있습니다.
EXPOSE 8080

##컨테이너의 상태를 10초마다 확인하게 됩니다.
HEALTHCHECK --interval=10s CMD wget -qO- localhost:8080

## 컨테이너가 실행될 때 실행되는 명령을 정의합니다. 여기서는 Java를 사용하여 /app.jar 파일을 실행하고, Spring 프로파일을 "dev"로 설정합니다. 이것은 애플리케이션을 시작하는 명령입니다.
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev","/app.jar"]

 

3. 터미널에 다음 명령어 입력

## -t 옵션은 내가 원하는 spring 이라는 이름의 이미지를 생성합니다. 
## -f 옵션은 내가 작성한 도커파일의 이름 Dokerfile과 경로 . (현재경로)을 참조합니다.
docker build -t spring -f Dockerfile .

 

4. 다음 명령어를 차례대로 입력

## docker 이미지가 생성되었는지 확인하는 명령어.
docker images

## docker 이미지를 실행하는 명령어 (컨테이너를 생성하고 실행함)
docker run -d -p 8080:8080 --name my-container spring:latest

## docker 컨테이너가 실행중인지 확인하는 명령어
docker ps

 

 

5. 이제 http://localhost:8080/ 접속해보자.


Docker hub 사용은 아래 명령어 참조 https://hub.docker.com/

## docker hub에 로그인 하기
docker login

## docker 로그인 확인하기
docker info

## 생성할 이미지 이름을 {namespce}/{repositoryname}:{태그} 로 정해준다.
docker build -t shinhyunjoon/spring:1.0 -f Docker .

## docker hub에 올리기
docker push shinhyunjoon/spring:1.0 

## 다른 pc 에서 docker hub에서 내려받기
docker pull shinhyunjoon/spring:1.0