--- name: docker-commands description: "ICJC Docker 서비스 관리 및 Make 명령어. Use when: (1) docker, make, 컨테이너, 서비스, 재시작, 로그 관련 요청, (2) 백엔드/프론트엔드/에이전트 재시작, (3) 빌드, 컨테이너 접속, 로그 확인, 서비스 상태 확인 필요시." --- # Docker Commands Skill ICJC 프로젝트의 Docker 서비스 관리를 위한 스킬입니다. ## 사용 시점 다음 키워드나 상황에서 이 스킬을 사용하세요: - "docker", "make", "컨테이너", "서비스", "재시작", "로그" - "백엔드 재시작", "프론트엔드 재시작", "빌드" - "컨테이너 접속", "로그 확인", "서비스 상태" ## 서비스 아키텍처 **의존성 순서:** MongoDB (27017) → Redis (6379) → Backend (8000) → Agent Gateway (8100→8080) → Frontend (3000) | 서비스 | 컨테이너명 | 외부포트 | 내부포트 | 설명 | |--------|-----------|---------|---------|------| | mongodb-primary | mongodb-primary-dev | 27017 | 27017 | MongoDB Atlas Local | | redis | redis-dev | 6379 | 6379 | Redis 캐시 | | backend | backend-dev | 8000 | 8000 | FastAPI 백엔드 | | agent-multi-gateway | agent-multi-gateway-dev | 8100 | 8080 | AI Agent Gateway | | frontend | frontend-dev | 3000 | 3000 | Next.js 프론트엔드 | ## 명령어 레퍼런스 ### 빠른 시작 | 명령어 | 설명 | 사용 시점 | |--------|------|----------| | `make build` | 전체 빌드 및 실행 | 첫 실행, 의존성 변경 | | `make all` | 빌드 없이 실행 | 이미 빌드된 상태 | | `make dev` | Docker Watch 개발 모드 | 개발 중 | ### 개별 서비스 | 명령어 | 설명 | 영향 범위 | |--------|------|----------| | `make backend` | 백엔드 + Agent 재시작 | DB/Frontend 유지 | | `make frontend` | 프론트엔드 재시작 (dev) | Frontend만 | | `make frontend-prod` | 프론트엔드 (prod) | Frontend만 | | `make agent` | Agent Gateway만 실행 | Agent만 | | `make agents` | 모든 Agent 재빌드 | Agent 전체 | | `make agents-light` | 모든 Agent 재시작 (빌드X) | Agent 전체 | | `make re-app` | 앱 컨테이너만 재시작 | DB 유지 | ### 로그 | 명령어 | 대상 | |--------|------| | `make logs` | 전체 | | `make logs-backend` | 백엔드 | | `make logs-frontend` | 프론트엔드 | | `make logs-agent` | Agent Gateway | | `make logs-mongo` | MongoDB 초기화 | | `docker logs -f backend-dev` | 백엔드 (직접) | | `docker logs -f --tail 100 frontend-dev` | 프론트엔드 최근 100줄 | ### 컨테이너 접근 | 명령어 | 대상 | |--------|------| | `docker exec -it backend-dev bash` | 백엔드 | | `docker exec -it frontend-dev sh` | 프론트엔드 | | `docker exec -it mongodb-primary-dev mongosh` | MongoDB | | `docker exec -it agent-multi-gateway-dev bash` | Agent | ### 클린업 | 명령어 | 설명 | 주의 | |--------|------|------| | `make down` | 컨테이너 중지 + 볼륨 삭제 | 데이터 유지됨 | | `make fclean` | down + 이미지/네트워크 정리 | | | `make purge` | 모든 Docker 리소스 제거 | **매우 주의** | ### MongoDB 관리 | 명령어 | 설명 | |--------|------| | `make mongo` | MongoDB 레플리카셋 테스트 | | `make mongo-reset` | MongoDB 완전 초기화 (데이터 삭제!) | | `make mongo-backup-dev` | Dev DB 백업 | | `make mongo-restore` | 백업 복원 | | `make mongo-sync-dev` | 백업 → 복원 | | `make mongo-rebuild` | 초기화 + 재시작 + 복원 | ### 문제 해결 | 명령어 | 설명 | |--------|------| | `make fix-permissions` | 파일 권한 문제 해결 | | `make frontend-fix-next-perms` | .next 볼륨 권한 수정 | | `make mem-watch` | 메모리 모니터링 | ## 환경 변수 | 변수 | 기본값 | 설명 | |------|--------|------| | FRONTEND_MODE | development | 프론트엔드 모드 | | USER_ID | $(id -u) | 컨테이너 사용자 ID | | GROUP_ID | $(id -g) | 컨테이너 그룹 ID | ```bash # 프로덕션 모드로 빌드 make build FRONTEND_MODE=production ``` ## 일반적인 워크플로우 ### 코드 변경 후 테스트 1. **백엔드 변경**: `make backend` (빠른 재시작) 2. **프론트엔드 변경**: Hot reload 자동 적용 (재시작 불필요) 3. **Agent 변경**: `make agents-light` (빌드 없이 재시작) 4. **의존성 변경**: `make build` (전체 재빌드) ### 문제 발생 시 1. 로그 확인: `make logs-backend` 또는 `make logs-frontend` 2. 컨테이너 상태: `docker ps` 3. 앱만 재시작: `make re-app` 4. 그래도 안되면: `make down && make build` ### 깨끗한 환경으로 시작 ```bash make fclean && make build ``` ## 이 스킬 사용 시 지침 1. **명령어 실행 전 상황 파악**: 사용자가 원하는 작업을 정확히 이해하고, 최소한의 영향을 주는 명령어를 선택하세요. 2. **DB 보존 우선**: 가능하면 DB를 유지하는 명령어 (`make backend`, `make re-app`)를 먼저 시도하세요. 3. **로그 확인 습관화**: 서비스 재시작 후 반드시 로그를 확인하여 정상 동작을 검증하세요. 4. **purge 사용 주의**: `make purge`는 모든 Docker 리소스를 삭제합니다. 사용자에게 경고하세요.