codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
에듀›Spring Boot 4 로 시작하는 백엔드›7단계

7단계

7단계 — 배포

0회 조회

7단계 — 배포

코드가 내 컴퓨터 에서만 동작하면 의미가 없어요. Docker 이미지로 만들어 어디서나 같은 모습으로 돌게 합니다.

Dockerfile 한 장

# 빌드 단계
FROM gradle:8.10-jdk21 AS builder
WORKDIR /app
COPY . .
RUN gradle bootJar --no-daemon

# 런타임 단계
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=builder /app/build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

bootJar 는 Spring 의 fat jar — 모든 의존성을 한 파일에. 멀티스테이지 빌드로 최종 이미지 크기를 1/3 로 줄여요.

📌 Spring Boot 4 메모: java -Djarmode=tools ... extract --layers 로 4 레이어 분리 (의존성/loader/snapshot/application) 시 호환 이슈 확인됨 (warragon 모노레포 실측 2026-05-14) — 표준 디렉터리가 비고 실 콘텐츠는 jar 이름 디렉터리에 추출되어 JarLauncher classpath 깨짐. 지금은 단일 jar COPY *.jar app.jar + ENTRYPOINT ["java", "-jar", "app.jar"] 가 안전. Boot 5+ 에서 재시도.

docker-compose 로 DB 까지

services:
  postgres:
    image: postgres:17-alpine
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: secret
    volumes:
      - pg-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U user"]
      interval: 5s

  app:
    build: .
    depends_on:
      postgres: { condition: service_healthy }
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/mydb
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: secret
    ports:
      - "8080:8080"

volumes:
  pg-data:

docker compose up -d 한 줄로 DB + 앱이 같이 떠요.

운영 체크리스트 5

배포 전에 한 번 보는 표:

  • ✅ application-prod.yml 분리 (운영 비밀번호·로그 레벨)
  • ✅ actuator/health 엔드포인트 노출 (HEALTHCHECK 용)
  • ✅ Dockerfile HEALTHCHECK 명시
  • ✅ Caddy 또는 Nginx 가 HTTPS·압축 처리
  • ✅ DB 백업 자동 (cron 또는 admin UI 버튼)

Caddy 로 HTTPS 한 줄

api.example.com {
    reverse_proxy app:8080
}

Caddy 는 Let's Encrypt 인증서를 자동 발급. 별도 설정 불필요.

직접 해 보기

위 Dockerfile + docker-compose.yml 을 프로젝트에 추가하고 docker compose up -d --build 를 돌려 보세요. http://localhost:8080/api/posts 가 동작하면 어디서나 같이 동작한다는 뜻.

더 깊이

  • Docker 기초 노트
  • docker-compose 패턴
  • Caddy 노트
  • devops-cloud 강좌 — 클라우드 1대 서버 운영

다음 단계

이 강좌는 끝났어요. 다음으로 devops-cloud 강좌 에서 진짜 서버에 올리거나, python-data-pipeline 으로 데이터 흐름을 만나 보세요.

← 6단계

6단계 — 테스트 전략

🎉 Spring Boot 4 로 시작하는 백엔드 완주를 축하해요

이어서 어떤 걸 배워 볼까요?

다음: Python · FastAPI · 데이터 파이프라인 →전체 강좌 둘러보기