docs: clarify internal java image usage in dockerfile
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 1m34s
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 1m34s
This commit is contained in:
39
Dockerfile
39
Dockerfile
@@ -1,31 +1,50 @@
|
|||||||
# 1. ??<3F><><EFBFBD>???<3F>꼍 (JDK 21)
|
# 1. 빌드 환경 (JDK 21)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# 외부 인터넷이 차단된 내부망에서는 Docker Hub 대신 사내 Container Registry의
|
||||||
|
# Java 21 이미지를 사용합니다. 인프라 담당자에게 이미지의 전체 경로와 태그를
|
||||||
|
# 받은 후 아래 FROM 행만 교체합니다.
|
||||||
|
#
|
||||||
|
# 예: FROM registry.shinhanlife.co.kr/base/openjdk:21 AS builder
|
||||||
|
#
|
||||||
|
# 이 단계는 Gradle 빌드와 Java 컴파일을 수행하므로 반드시 JDK 21 이미지여야 합니다.
|
||||||
|
# 사내 이미지가 실제로 JDK 21인지 다음 명령으로 확인합니다.
|
||||||
|
# docker run --rm <사내-JDK-이미지> java -version
|
||||||
FROM eclipse-temurin:21-jdk-alpine AS builder
|
FROM eclipse-temurin:21-jdk-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Gradle ??<3F>띁?? ???<3F><> 蹂듭<E8B982>?
|
# Gradle Wrapper와 소스 파일을 복사합니다.
|
||||||
COPY gradlew .
|
COPY gradlew .
|
||||||
COPY gradle gradle
|
COPY gradle gradle
|
||||||
COPY build.gradle settings.gradle ./
|
COPY build.gradle settings.gradle ./
|
||||||
COPY src src
|
COPY src src
|
||||||
|
|
||||||
# 沅뚰<EFBFBD>??<3F>??<3F>???<3F><><EFBFBD>?(???<3F><>????<3F>쇅)
|
# Wrapper 실행 권한을 부여하고 테스트를 제외한 빌드를 수행합니다.
|
||||||
RUN chmod +x gradlew
|
RUN chmod +x gradlew
|
||||||
RUN ./gradlew clean build -x test
|
RUN ./gradlew clean build -x test
|
||||||
|
|
||||||
# 2. ??<3F>뻾 ??<3F>꼍 (JRE 21)
|
# 2. 실행 환경 (JRE 21)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# 실행 단계는 JRE 21 이미지가 가장 가볍지만, 사내에서 JDK 21 이미지만 제공하는
|
||||||
|
# 경우에는 동일한 JDK 21 이미지를 사용해도 정상 동작합니다.
|
||||||
|
#
|
||||||
|
# 예: FROM registry.shinhanlife.co.kr/base/openjre:21
|
||||||
|
# 예: FROM registry.shinhanlife.co.kr/base/openjdk:21
|
||||||
|
#
|
||||||
|
# 사내 제공 이미지의 기반 OS를 확인합니다.
|
||||||
|
# - Alpine 기반: 아래 apk 명령을 그대로 사용합니다.
|
||||||
|
# - Ubuntu/Debian 기반: apk 대신 apt-get update && apt-get install -y tzdata를 사용합니다.
|
||||||
FROM eclipse-temurin:21-jre-alpine
|
FROM eclipse-temurin:21-jre-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# ???꾩<>???<3F>젙 (??<3F>뎅 ??<3F>컙)
|
# 서울 시간대를 설정합니다.
|
||||||
RUN apk add --no-cache tzdata
|
RUN apk add --no-cache tzdata
|
||||||
ENV TZ=Asia/Seoul
|
ENV TZ=Asia/Seoul
|
||||||
|
|
||||||
# ??<3F><><EFBFBD>??JAR ???<3F><> 蹂듭<E8B982>?
|
# 빌드 단계에서 생성한 애플리케이션 JAR를 복사합니다.
|
||||||
COPY --from=builder /app/build/libs/*.jar app.jar
|
COPY --from=builder /app/build/libs/*.jar app.jar
|
||||||
|
|
||||||
# 湲곕???????몄텧
|
# 애플리케이션 포트를 노출합니다.
|
||||||
EXPOSE 8081
|
EXPOSE 8081
|
||||||
|
|
||||||
# ?<3F>⑦???<3F><>???<3F>뻾 ??JAR ??<3F>뻾
|
# 애플리케이션을 실행합니다.
|
||||||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||||||
|
|
||||||
Reference in New Issue
Block a user