[영상] 가장 쉽게 배우는 도커
제조 AI 어시스턴트 MVP 완성
[영상] 가장 쉽게 배우는 도커
통합 프로젝트 > 제조 AI 어시스턴트 MVP 완성
- Docker Compose를 사용해 LLM 서버·벡터DB·FastAPI·Streamlit을 단일 스택으로 구성하는 docker-compose.yml을 작성할 수 있다
- 컨테이너 간 네트워크 통신·볼륨 마운트·환경변수 관리 방법을 설명할 수 있다
- Week 8 주간 프로젝트 '제조 AI 어시스턴트 MVP' 요구사항을 분해하고 구현 우선순위를 정할 수 있다
- MVP 이후 프로덕션 고도화를 위한 다음 단계(인증·모니터링·CI/CD)를 설명할 수 있다
영상 핵심 정리 — 가장 쉽게 배우는 도커
이 영상은 Week 8의 마지막으로, Docker와 Docker Compose를 활용해 제조 AI 어시스턴트의 전체 스택을 단일 파일로 관리하는 방법을 설명한다. LLM 서버·벡터DB·API·UI를 한 번에 실행하는 실전 구성을 다룬다.
1. 제조 AI 스택 Docker Compose
# Compose v2 는 최상단 version 키를 더 이상 읽지 않는다.
# 남겨 두면 obsolete 경고가 뜨므로 적지 않는다.
services:
ollama:
image: ollama/ollama
ports: ['11434:11434']
volumes:
- ollama_data:/root/.ollama
chromadb:
image: chromadb/chroma:latest
ports: ['8000:8000']
volumes:
- chroma_data:/chroma/chroma
# condition: service_healthy 로 기다리게 하려면
# 기다림을 받을 쪽에 healthcheck 가 있어야 한다.
# 없으면 compose 가 아예 거절한다:
# service chromadb is required to be healthy but no healthcheck defined
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/api/v2/heartbeat || exit 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
api:
build: ./api
ports: ['8001:8001']
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- CHROMA_HOST=chromadb
- CHROMA_PORT=8000
depends_on:
chromadb:
condition: service_healthy
ollama:
condition: service_started
ui:
build: ./ui
ports: ['8501:8501']
environment:
- API_URL=http://api:8001
depends_on:
- api
volumes:
ollama_data:
chroma_data:
2. 핵심 Docker 명령어
docker compose up -d
docker compose logs -f api
docker compose up -d --build api
docker compose down
docker compose down -v
3. MVP → 프로덕션 로드맵
[MVP] Docker Compose 로컬 실행
↓
[v1.0] GCP Cloud Run 배포 + GitHub Actions CI/CD
↓
[v1.1] 사용자 인증 (OAuth 2.0) + 감사 로그
↓
[v2.0] Kubernetes + Prometheus/Grafana 모니터링
↓
[v2.1] 모델 드리프트 감지 + 자동 재학습 파이프라인함정 주의: depends_on만으로는 서비스가 '준비됐는지'를 보장하지 않는다. Compose는 컨테이너가 '시작됐는지'만 확인한다. ChromaDB가 컨테이너는 시작했지만 내부 초기화가 덜 됐을 때 API가 연결을 시도하면 에러가 난다. healthcheck를 각 서비스에 정의하고 condition: service_healthy로 의존성을 걸어야 안전하다.
다음 task와의 연결
다음 reading '주간 프로젝트: 제조 AI 어시스턴트 MVP - 데모의 날'로 이어져 5일간 만든 것을 점검하고 데모를 준비한다.
영상의 compose 예시와 이번 주 compose 는 다르다. 우리 쪽에는 Ollama 도 Chroma 컨테이너도 없고, 앱과 Neo4j 둘뿐이다. 실시간 센서 대시보드도 이번 주 범위가 아니다(W11 예지보전, W12 스마트 팩토리 최적화에서 다룬다). 목표는 설비 알람 진단과 매뉴얼 검색, 설비 관계 탐색이 한 화면에서 도는 것까지다.
Docker Compose의 depends_on + healthcheck 설정이 올바르지 않을 때 발생하는 서비스 시작 순서 문제를 AI로 시뮬레이션하여 실제 배포 전에 취약점을 파악하세요.
스마트팩토리 AI 시스템의 Docker Compose 파일에서 depends_on과 healthcheck 설정이 잘못됐을 때 발생할 수 있는 장애 시나리오 3가지를 만들어줘. FastAPI가 ChromaDB보다 먼저 시작되는 경우, 벡터DB 볼륨 마운트 없이 컨테이너 재시작 시 데이터 유실, 컨테이너 간 서비스 이름 호스트명 오설정 등을 포함하고 올바른 설정 예시도 보여줘.
- • Docker Compose의 `depends_on` + `healthcheck`로 서비스 시작 순서를 보장한다 — DB가 준비되기 전에 API가 시작되면 연결 에러가 발생한다
- • 컨테이너 간 통신은 서비스 이름이 호스트명이 된다 — FastAPI에서 `http://chromadb:8000`으로 벡터DB에 접근하면 된다
- • 볼륨 마운트로 모델 파일·벡터DB 데이터를 컨테이너 외부에 저장해야 컨테이너 재시작 후에도 데이터가 유지된다
- • MVP 우선순위: 핵심 기능(진단 채팅) → 데이터 연결(RAG) → UI 완성(대시보드) → 배포 자동화 — 완벽한 설계보다 작동하는 MVP가 먼저다
