version: "3.8" services: # MariaDB 데이터베이스 db: image: mariadb:10.9 container_name: tkfb_db restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=tkfb2024! - MYSQL_DATABASE=hyungi - MYSQL_USER=hyungi_user - MYSQL_PASSWORD=hyungi2024! volumes: - db_data:/var/lib/mysql - ./api.hyungi.net/migrations:/docker-entrypoint-initdb.d ports: - "20306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10 networks: - tkfb_network # Node.js API 서버 api: build: context: ./api.hyungi.net dockerfile: Dockerfile container_name: tkfb_api depends_on: db: condition: service_healthy restart: unless-stopped ports: - "20005:3005" environment: - NODE_ENV=production - PORT=3005 - DB_HOST=db - DB_PORT=3306 - DB_USER=hyungi_user - DB_PASSWORD=hyungi2024! - DB_NAME=hyungi - DB_ROOT_PASSWORD=tkfb2024! - JWT_SECRET=tkfb_jwt_secret_2024_hyungi_secure_key volumes: - ./api.hyungi.net/public/img:/usr/src/app/public/img:ro - ./api.hyungi.net/uploads:/usr/src/app/uploads - ./api.hyungi.net/logs:/usr/src/app/logs - ./api.hyungi.net/routes:/usr/src/app/routes - ./api.hyungi.net/controllers:/usr/src/app/controllers - ./api.hyungi.net/models:/usr/src/app/models - ./api.hyungi.net/index.js:/usr/src/app/index.js logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - tkfb_network # Web UI (Nginx) web: build: context: ./web-ui dockerfile: Dockerfile container_name: tkfb_web restart: unless-stopped ports: - "20000:80" volumes: - ./web-ui:/usr/share/nginx/html:ro depends_on: - api networks: - tkfb_network # FastAPI Bridge fastapi: build: context: ./fastapi-bridge dockerfile: Dockerfile container_name: tkfb_fastapi restart: unless-stopped ports: - "20008:8000" environment: - API_BASE_URL=http://api:3005 depends_on: - api networks: - tkfb_network # phpMyAdmin phpmyadmin: image: phpmyadmin/phpmyadmin:latest container_name: tkfb_phpmyadmin depends_on: - db restart: unless-stopped ports: - "20080:80" environment: - PMA_HOST=db - PMA_USER=root - PMA_PASSWORD=tkfb2024! - UPLOAD_LIMIT=50M networks: - tkfb_network volumes: db_data: driver: local networks: tkfb_network: driver: bridge name: tkfb_network