zioinfo-mail/docker-compose.prod.yml
DESKTOP-TKLFCPR\ython eea643ce40 feat(docker): Docker 컨테이너 환경 구성
[파일 목록]
- Dockerfile: GUARDiA ITSM Python 3.11-slim 이미지
  - 비루트(guardia) 계정 실행
  - 헬스체크 내장
- docker-compose.yml: 개발/테스트 풀스택
  - guardia-itsm, nginx, postgres:15, redis:7, ollama/ollama, tomcat:9
  - Ollama 모델은 볼륨 마운트 (이미지 외부)
- docker-compose.prod.yml: 운영 환경 오버라이드
  - 외부 포트 차단, 호스트 경로 마운트
- docker-compose.gpu.yml: NVIDIA GPU 오버라이드
- docker-start.sh: dev|prod|gpu 모드 빠른 시작
- .dockerignore: 보안 파일(.env, *.db) 제외
- docker/nginx/guardia.conf: 리버스 프록시 설정
- docker/tomcat/tomcat-users.xml: opsagent 계정 설정

[폐쇄망 패키지]
- setup/docker_package.sh: 인터넷 서버에서 모든 이미지를 tar.gz로 패키징
- setup/docker_load.sh: 폐쇄망에서 tar.gz 로드 + 즉시 시작 옵션

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:08:52 +09:00

47 lines
1.4 KiB
YAML

# ============================================================
# GUARDiA ITSM — 운영 환경 오버라이드
# ============================================================
# 사용법:
# docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# ============================================================
services:
guardia:
image: guardia-itsm:${GUARDIA_VERSION:-latest}
environment:
DATABASE_URL: ${DATABASE_URL} # 운영 DB URL 필수
SECRET_KEY: ${SECRET_KEY} # 운영 시크릿 키 필수
ports:
- "127.0.0.1:8001:8001" # localhost만 — Nginx를 통해서만 외부 접근
volumes:
- /data/guardia/uploads:/app/uploads # 호스트 경로 직접 마운트
- /data/guardia/logs:/app/logs
deploy:
replicas: 1
restart_policy:
condition: on-failure
max_attempts: 3
resources:
limits:
cpus: "2.0"
memory: 2G
postgres:
ports: [] # 운영에서는 외부 노출 금지
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
redis:
ports: [] # 운영에서는 외부 노출 금지
ollama:
ports:
- "127.0.0.1:11434:11434" # localhost만 노출
volumes:
- ${OLLAMA_MODELS_PATH:-/data/ollama}:/root/.ollama
tomcat:
ports:
- "127.0.0.1:8080:8080" # localhost만