java
CHAPTER 66 / 69
읽기 약 2분
FUNCTION
Docker로 배포
핵심 개념
Spring Boot 앱을 Docker 컨테이너로 패키징하고 배포한다. 멀티 스테이지 빌드, docker-compose, 환경변수 관리를 익힌다.
코드 분석
# Dockerfile (멀티 스테이지 빌드)
FROM eclipse-temurin:17-jdk-alpine AS builder
WORKDIR /app
COPY gradlew .
COPY gradle gradle
COPY build.gradle settings.gradle .
RUN ./gradlew dependencies --no-daemon
COPY src src
RUN ./gradlew bootJar --no-daemon
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /app/build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
# docker-compose.yml
version: "3.8"
services:
app:
build: .
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_URL=jdbc:mysql://db:3306/mydb
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
depends_on:
- db
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
# 실행
docker compose up -d
docker compose logs -f appAI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
이 Spring 'Docker로 배포' 코드에서 DI 관련 버그·순환 참조·트랜잭션 누수를 찾아서 수정해줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
'Docker로 배포'를 Spring Boot 3.x로 구현한 실전 API 코드(컨트롤러+서비스+레포지토리+테스트)를 완성형으로 만들어줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
이 Spring 'Docker로 배포' 프로젝트의 빈 구조와 의존성 트리를 전체 분석하고 N+1 쿼리·순환 참조·성능 병목을 정리해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
Spring 'Docker로 배포' vs Quarkus·Micronaut·Ktor의 동일 기능 구현을 2026년 한국 채용 시장 기준으로 솔직히 비교해줘.
⭐ 이것만 기억하세요
Docker로 배포는 이 3가지만 확실히 잡으세요
1.jar를 서버에 직접 실행하면 JDK 버전, 환경 변수, OS 차이로 환경 문제가 반복됩니다
2.멀티 스테이지 Dockerfile로 Gradle 빌드 → JRE 이미지에 jar 복사하면 최소 크기 컨테이너가 됩니다
3.다음 챕터에서 코드 변경을 자동으로 빌드·배포하는 CI/CD를 배웁니다
공유하기
진행도 66 / 69