Daramu
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
블로그 내 검색

Daramu

다람어의 블로그

  • 개발/Spring boot

    Spring boot Dockerfile

    2026. 5. 29.

    by. Daramu

    스프링 부트를 이미지로 만들기 위한 도커 파일이다.

    프로젝트는 Gradle - Kotlin로 생성했고, JDK는 17을 사용중이다.

     

    아래 예시는 Java 17 기준이며, 자바 버전이 다르다면 두개의 베이스 이미지(FROM)을 변경하면 된다.

     

    FROM eclipse-temurin:17-jdk-alpine AS builder
    WORKDIR /build
    
    COPY gradlew .
    RUN chmod +x ./gradlew
    
    COPY gradle gradle
    COPY build.gradle.kts settings.gradle.kts ./
    
    RUN ./gradlew dependencies --no-daemon || true
    
    COPY src src
    RUN ./gradlew bootJar -x test --no-daemon
    
    RUN java -Djarmode=layertools -jar build/libs/*-SNAPSHOT.jar extract
    
    FROM eclipse-temurin:17-jre-alpine
    WORKDIR /app
    
    RUN apk add --no-cache tzdata && \
        cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
        echo "Asia/Seoul" > /etc/timezone
    
    RUN addgroup -S spring && adduser -S spring -G spring
    USER spring:spring
    
    COPY --from=builder /build/dependencies/ ./
    COPY --from=builder /build/spring-boot-loader/ ./
    COPY --from=builder /build/snapshot-dependencies/ ./
    COPY --from=builder /build/application/ ./
    
    EXPOSE 8080
    
    ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]

     

    # JDK 26이라면
    FROM eclipse-temurin:26-jdk-alpine AS builder
    FROM eclipse-temurin:26-jre-alpine

     

    저작자표시 (새창열림)

    '개발 > Spring boot' 카테고리의 다른 글

    Keycloak, React, Spring Boot 연동: Notification 서비스 생성  (1) 2026.06.06
    Keycloak, React, Spring Boot 연동: user 서비스 생성  (0) 2026.06.06
    Keycloak, React, Spring Boot 연동: SCG(Spring Cloud Gateway) 생성하기  (1) 2026.06.06
    Keycloak, React, Spring Boot 연동: DB 생성하기  (0) 2026.06.06
    Spring boot - Spring Cloud Gateway(SCG) 란?  (0) 2026.06.02

    댓글

    관련글

    • Keycloak, React, Spring Boot 연동: user 서비스 생성 2026.06.06
    • Keycloak, React, Spring Boot 연동: SCG(Spring Cloud Gateway) 생성하기 2026.06.06
    • Keycloak, React, Spring Boot 연동: DB 생성하기 2026.06.06
    • Spring boot - Spring Cloud Gateway(SCG) 란? 2026.06.02
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
Daramu

티스토리툴바