
Git Clone부터 Docker Compose 실행까지 5분 안에 전체 환경 구축.
# 1. Docker Desktop 설치
# https://www.docker.com/products/docker-desktop/ 에서 다운로드
# 2. 설치 확인
docker --version
docker-compose --version
# 출력 예시:
# Docker version 24.0.0
# Docker Compose version v2.20.0
# 1. Docker Desktop 설치
# https://www.docker.com/products/docker-desktop/ 에서 다운로드
# 2. WSL 2 활성화 (Docker Desktop이 요구함)
# 설치 중 자동으로 안내됨
# 3. 설치 확인
docker --version
docker-compose --version
macOS: 상단 메뉴바에 고래 아이콘 확인
Windows: 시스템 트레이에 고래 아이콘 확인
macOS / Windows 공통:
# 전체 스택 시작 (백그라운드)
docker-compose up -d
실행 과정 (3-5분 소요):
[1단계] 이미지 다운로드 (첫 실행 시)
✓ MySQL 8.0 이미지 다운로드
✓ Redis 7-alpine 이미지 다운로드
[2단계] Spring Boot 빌드
✓ Gradle 의존성 다운로드 (60초)
✓ bootJar 빌드 (50초)
✓ Docker 이미지 생성 (20초)
[3단계] 컨테이너 시작
✓ MySQL 시작 및 초기화 (30초)
✓ Redis 시작 (5초)
✓ Spring Boot 시작 및 BaseInitData 실행 (20초)
✅ 완료!
# 컨테이너 상태 확인
docker-compose ps
# 정상 출력 예시:
# NAME STATUS PORTS
# auction-app Up 2 min (healthy) 0.0.0.0:8080->8080/tcp
# auction-mysql-compose Up 3 min (healthy) 0.0.0.0:3307->3306/tcp
# auction-redis-compose Up 3 min (healthy) 0.0.0.0:6380->6379/tcp
확인 포인트:
# 헬스체크
curl http://localhost:8080/actuator/health
# 정상 응답:
# {"status":"UP"}
# Swagger UI (API 문서)
http://localhost:8080/swagger-ui/index.html
# Spring Boot Actuator
http://localhost:8080/actuator/health
# Spring Boot 로그에서 BaseInitData 실행 확인
docker-compose logs app | grep BaseInitData
# 출력 예시:
# BaseInitData 시작
# 카테고리 12개 생성 완료
# 테스트 유저 3명 생성 완료
# 테스트 경매 20개 생성 완료
Connection Name: Docker Auction App
Hostname: localhost
Port: 3307 ← 중요! (3306 아님)
Username: root
Password: lldj123414
Default Schema: DevCourse
docker exec -it auction-redis-compose redis-cli
# Redis 명령 실행
127.0.0.1:6379> KEYS *
127.0.0.1:6379> exit
# 전체 재시작
docker-compose restart
# Spring Boot만 재시작 (코드 수정 후)
docker-compose restart app
# 전체 로그 (실시간)
docker-compose logs -f
# Spring Boot 로그만 (실시간)
docker-compose logs -f app
# 최근 100줄만 보기
docker-compose logs --tail=100 app
# 에러 로그만 검색
docker-compose logs app | grep ERROR
# 중지 (데이터 유지)
docker-compose stop
# 중지 + 컨테이너 삭제 (데이터 유지)
docker-compose down
# 완전 삭제 (데이터도 삭제)
docker-compose down -v
# 1. 코드 수정
# 2. Spring Boot만 재빌드 + 재시작
docker-compose build app
docker-compose up -d app
# 또는 한 줄로
docker-compose up -d --build app
# 실시간 리소스 사용량
docker stats
# 한 번만 출력
docker stats --no-stream
docker-compose ps
# 출력:
# auction-app Restarting (1)
# 1. 로그 확인
docker-compose logs app
# 2. 완전 재시작
docker-compose down
docker-compose up -d
# 3. 캐시 삭제 후 재빌드
docker-compose build --no-cache
docker-compose up -d
Error: bind: address already in use
macOS:
# 포트 사용 중인 프로세스 확인
lsof -i :8080
lsof -i :3307
lsof -i :6380
# 프로세스 종료
kill -9 [PID]
Windows (PowerShell):
# 포트 사용 중인 프로세스 확인
netstat -ano | findstr :8080
# 프로세스 종료
taskkill /PID [PID] /F
Communications link failure
# MySQL이 healthy 상태가 될 때까지 대기
docker-compose logs -f mysql
# healthy 확인 후 app 재시작
docker-compose restart app
docker-compose ps
# 출력:
# auction-app Restarting (137) # 137 = OOMKilled
# 1. Docker Desktop 설정에서 메모리 증가
# Docker Desktop → Settings → Resources → Memory: 8GB 이상
# 2. 재시작
docker-compose down
docker-compose up -d
현재 설정은 개발/테스트 환경용입니다:
# 개발 환경 설정 (현재)
MYSQL_PASSWORD= ~~~ ← 약한 비밀번호
테스트 유저: ~~~ ← 테스트용
# .env 파일 수정
MYSQL_PASSWORD=Strong_P@ssw0rd_2026!
# .gitignore 확인
cat .gitignore | grep .env
# 출력 확인:
# .env
# .env.*
# 서버 환경 변수 설정 (운영 환경)
export MYSQL_PASSWORD="운영_비밀번호"
export JWT_SECRET="운영_시크릿키"
# 처음 실행
git clone [레포지토리 URL]
cd DevCource_2
docker-compose up -d
# 확인
docker-compose ps
curl http://localhost:8080/actuator/health
# 로그 확인
docker-compose logs -f app
# 코드 수정 후 재배포
docker-compose up -d --build app
# 리소스 모니터링
docker stats
# 중지 (데이터 유지)
docker-compose stop
# 완전 삭제 (다음 실행 시 새로 시작)
docker-compose down -v
A: docker-compose.yml 파일 수정:
services:
app:
ports:
- "9090:8080" # 호스트 포트를 9090으로 변경
재시작:
docker-compose down
docker-compose up -d
MySQL:
docker exec -it auction-mysql-compose mysql -u root -p
# 비밀번호: lldj123414
Redis:
docker exec -it auction-redis-compose redis-cli
# 1. 완전 초기화
docker-compose down -v
# 2. Docker 시스템 정리
docker system prune -a
# 경고: 모든 이미지 삭제됨!
# 3. 재시작
docker-compose up --build -d
# 4. 로그 확인
docker-compose logs -f
문제가 해결되지 않으면:
로그 수집
docker-compose logs > error.log
시스템 정보 수집
docker version
docker-compose version
docker-compose ps
팀 리더에게 전달
error.log 파일