38 lines
800 B
Docker
38 lines
800 B
Docker
# Spring Boot 백엔드 운영용 Dockerfile
|
|
FROM eclipse-temurin:21-jdk-alpine AS build
|
|
WORKDIR /app
|
|
|
|
# Gradle Wrapper 복사
|
|
COPY gradlew ./
|
|
COPY gradle ./gradle
|
|
RUN chmod +x gradlew
|
|
|
|
# 의존성 캐싱
|
|
COPY build.gradle settings.gradle ./
|
|
RUN ./gradlew dependencies --no-daemon || true
|
|
|
|
# 소스 복사 및 빌드
|
|
COPY src ./src
|
|
RUN ./gradlew bootJar --no-daemon
|
|
|
|
# Runtime image
|
|
FROM eclipse-temurin:21-jre-alpine AS runner
|
|
WORKDIR /app
|
|
|
|
RUN apk add --no-cache curl
|
|
|
|
# 비특권 사용자 생성
|
|
RUN addgroup -S appgroup && adduser -S -G appgroup appuser
|
|
|
|
# JAR 복사
|
|
COPY --from=build /app/build/libs/*.jar app.jar
|
|
|
|
# 디렉토리 생성
|
|
RUN mkdir -p logs uploads data && \
|
|
chown -R appuser:appgroup /app && \
|
|
chmod -R 755 /app
|
|
|
|
EXPOSE 8081
|
|
USER appuser
|
|
CMD ["java", "-jar", "app.jar"]
|