협업을 하려면 윈도우, 맥등 여러 환경 요소를 통합해야하기 때문에 어쩔 수 없이 도커를 사용해야한다.
다음은 도커 파일이다.

보통 빌드용으로 많이 사용하는 이미지 내용이지만 최근 openjdk 이미지에 해당 공지가 올라오면서 유지보수가 안되는 이미지로 결국 보안 문제나 향후, 다른 문제를 겪을 수 있기 때문에 수정하게 되었다.

최신 트렌드로 도커 이미지를 줄이고 있다
How we reduced our java docker image from 1.5 GB to 300MB ?
커스텀 JRE(런타임)를 만들어서 JAR(자바 실행파일)을 매번 작동시키는 것이 좋다고 판단하였다
보통 빌드를 하고 배포를 하지만 빌드를 수동으로 하면서 휴먼 에러, 파일만 수정하고 빌드 없이 올라가는 경우 정상적인 구동이라 착각할 수 있기 때문이다.
# Dockerfile
# 1) 커스텀 JRE 생성(glibc 계열로 통일)
FROM bellsoft/liberica-runtime-container:jdk-all-cds-slim AS builder-jre
RUN $JAVA_HOME/bin/jlink \
--module-path "$JAVA_HOME/jmods" \
--add-modules ALL-MODULE-PATH \
--strip-debug \
--compress=zip-9 \
--output /custom-jre
# 2) 애플리케이션 빌드
FROM gradle:9.0-jdk21-jammy AS builder
# 의존성 캐시 단계
COPY build.gradle .
COPY settings.gradle .
COPY gradle gradle/
RUN gradle dependencies
# 소스 빌드
COPY src ./src
RUN gradle bootJar --no-daemon
# 3) 실행 이미지
FROM alpine:3.22.1
ENV JAVA_HOME=/opt/java
ENV PATH="${JAVA_HOME}/bin:${PATH}"
COPY --from=builder-jre /custom-jre /opt/java
# Spring Boot 기본 설정상 단일 부트 JAR만 생성된다는 가정
COPY --from=builder /home/gradle/build/libs/*.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]