이번 프로젝트에서 docker를 통해 로컬환경에 배포해보면서 Dockerfile 작성법에 대해서 배웠다.
Dockerfile이란?
Dockerfile은 Docker Container 이미지를 빌드하는데 사용되는 설정파일이다.
Dockerfile 내부에는 Docker build시에 시스템에게 Container 이미지를 생성하는 방법을 지시하는 명령문을 포함하고 있다.
Dockerfile은 프로젝트의 최상위 경로에 위치한다.

Dockerfile 내부를 보면 다음과 같다.
FROM gradle:8.5.0-jdk17 AS builder
WORKDIR /blog
COPY . .
RUN ./gradlew bootJar
FROM openjdk:17
COPY --from=builder /blog/build/libs/ /app
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "-Dspring.profiles.active=prod", "/app/app.jar" ]
FROM gradle:8.5.0-jdk17 AS builder
FROM : 기본 이미지로 사용할 Docker 이미지를 정한다.
WORKDIR /blog
작업 디렉토리를 설정한 나는 /blog 라는 디렉토리로 설정했다. (docker container 내부에서 사용할 디렉토리이다.)
COPY . .
현재 디렉토리의 모든 파일을 Docker 컨테이너의 workdir로 설정한 디렉토리에 복사한다.
.이 하나가 붙으면 현재 디렉토리고 두개가 붙으면 작업디렉토리 (상대경로의 개념)
RUN ./gradlew bootJar
gradle을 사용하여 프로젝트를 빌드한다.
실제로 springboot 프로젝트를 bulid한 bootJar를 실행해준다.
EXPOSE 8080
해당 container가 사용할 port를 8080으로 설정
ENTRYPOINT [ "java", "-jar", "-Dspring.profiles.active=prod", "/app/app.jar" ]
container가 시작될때 실행되는 명령이다.
springboot project에서 이와같이 Dockerfile을 작성할 수 있다.