version: '3.8' services: # Nginx 리버스 프록시 nginx: build: ./nginx container_name: document-server-nginx ports: - "24100:80" volumes: - ./frontend:/usr/share/nginx/html - ./uploads:/usr/share/nginx/html/uploads depends_on: - backend networks: - document-network restart: unless-stopped # Backend API 서버 backend: build: ./backend container_name: document-server-backend ports: - "24102:8000" volumes: - ./uploads:/app/uploads - ./backend/src:/app/src environment: - DATABASE_URL=postgresql://docuser:docpass@database:5432/document_db - PAPERLESS_URL=${PAPERLESS_URL:-http://localhost:8000} - PAPERLESS_TOKEN=${PAPERLESS_TOKEN:-} - DEBUG=true depends_on: - database networks: - document-network restart: unless-stopped # PostgreSQL 데이터베이스 database: image: postgres:15-alpine container_name: document-server-db ports: - "24101:5432" environment: - POSTGRES_DB=document_db - POSTGRES_USER=docuser - POSTGRES_PASSWORD=docpass volumes: - postgres_data:/var/lib/postgresql/data - ./database/init:/docker-entrypoint-initdb.d networks: - document-network restart: unless-stopped # Redis (캐싱 및 세션) redis: image: redis:7-alpine container_name: document-server-redis ports: - "24103:6379" volumes: - redis_data:/data networks: - document-network restart: unless-stopped command: redis-server --appendonly yes volumes: postgres_data: redis_data: networks: document-network: driver: bridge