FROM openjdk:21-jdk-slim
WORKDIR /app
# COPY만 docker-compose 파일의 위치를 기반으로 작동함
COPY . .
# 개행문자 오류 해결 [unix와 window 시스템 차이]
RUN sed -i 's/\r$//' gradlew
# RUN은 현재 파일을 위치를 기반으로 작동함
RUN chmod +x ./gradlew
RUN ./gradlew clean build
ENV JAR_PATH=/app/build/libs
RUN mv ${JAR_PATH}/*.jar /app/app.jar
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]
openjdk:21-jdk-slim 이미지를 베이스 이미지로 사용
- 이미지를 만들 때 jdk가 다운로드 된다
작업 디렉토리를 /app으로 설정
현재 디렉토리의 모든 파일을 컨테이너의 /app 디렉토리로 복사
gradlew 파일의 개행문자 오류를 해결
gradlew 파일에 실행 권한을 부여한 후, ./gradlew clean build 명령을 실행하여 프로젝트를 클린 빌드
ENV JAR_PATH=/app/build/libs
RUN mv ${JAR_PATH}/*.jar /app/app.jar
환경 변수 JAR_PATH를 설정하고, 해당 경로의 JAR 파일을 /app/app.jar로 이동
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]
컨테이너가 시작될 때 실행할 명령을 설정한다
Java로 JAR 파일을 실행하며, 활성화할 Spring 프로필을 'prod'로 설정
- prod관련은 없어도 된다 (로컬에서 실행할 때랑 도커에서 실행할 때랑 구분짓기 위해 설정된 사항)