# 시놀로지 NAS 923+ 배포용 Docker Compose # TK-FB-Project - 테크니컬코리아 작업 관리 시스템 services: # MySQL 데이터베이스 db: image: mysql:8.0 container_name: tkfb_db_prod restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: tkfb2024! MYSQL_DATABASE: hyungi MYSQL_USER: hyungi_user MYSQL_PASSWORD: hyungi_pass2024! TZ: Asia/Seoul ports: - "3306:3306" volumes: - db_data:/var/lib/mysql - ./init_db:/docker-entrypoint-initdb.d - ./mysql_conf:/etc/mysql/conf.d command: --default-authentication-plugin=mysql_native_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-ptkfb2024!"] timeout: 20s retries: 10 networks: - tkfb_network # Redis 캐시 서버 redis: image: redis:7-alpine container_name: tkfb_redis_prod restart: unless-stopped environment: TZ: Asia/Seoul ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] timeout: 3s retries: 5 networks: - tkfb_network # Node.js API 서버 api: build: ./api container_name: tkfb_api_prod restart: unless-stopped environment: NODE_ENV: production DB_HOST: db DB_PORT: 3306 DB_NAME: hyungi DB_USER: hyungi_user DB_PASSWORD: hyungi_pass2024! JWT_SECRET: tkfb_jwt_secret_2024_synology_prod PORT: 3005 REDIS_HOST: redis REDIS_PORT: 6379 TZ: Asia/Seoul ports: - "20005:3005" volumes: - api_logs:/usr/src/app/logs - api_uploads:/usr/src/app/uploads depends_on: db: condition: service_healthy redis: condition: service_healthy networks: - tkfb_network # FastAPI 브리지 서버 fastapi: build: ./fastapi-bridge container_name: tkfb_fastapi_prod restart: unless-stopped environment: PYTHONPATH: /app TZ: Asia/Seoul ports: - "8000:8000" volumes: - fastapi_logs:/app/logs depends_on: - api networks: - tkfb_network # Nginx 웹 서버 web: image: nginx:alpine container_name: tkfb_web_prod restart: unless-stopped ports: - "20000:80" volumes: - ./web-ui:/usr/share/nginx/html - ./nginx_conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx_conf/default.conf:/etc/nginx/conf.d/default.conf depends_on: - api - fastapi networks: - tkfb_network # phpMyAdmin (선택사항 - 개발/관리용) phpmyadmin: image: phpmyadmin/phpmyadmin container_name: tkfb_phpmyadmin_prod restart: unless-stopped environment: PMA_HOST: db PMA_PORT: 3306 PMA_USER: root PMA_PASSWORD: tkfb2024! MYSQL_ROOT_PASSWORD: tkfb2024! TZ: Asia/Seoul ports: - "8080:80" depends_on: db: condition: service_healthy networks: - tkfb_network # 네트워크 설정 (단순화) networks: tkfb_network: driver: bridge # 볼륨 설정 (시놀로지 SSD 최적화) volumes: db_data: driver: local driver_opts: type: none o: bind device: /volume2/docker/tkfb/mysql_data api_logs: driver: local driver_opts: type: none o: bind device: /volume2/docker/tkfb/api_logs api_uploads: driver: local driver_opts: type: none o: bind device: /volume2/docker/tkfb/api_uploads fastapi_logs: driver: local driver_opts: type: none o: bind device: /volume2/docker/tkfb/fastapi_logs redis_data: driver: local driver_opts: type: none o: bind device: /volume2/docker/tkfb/redis_data