Files
invyone/docker/prod/backend-spring.Dockerfile

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"]