version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    container_name: ${COMPOSE_PROJECT_NAME:-app}-dev
    ports:
      - '${PORT:-3000}:3000'
    volumes:
      # 소스 코드 핫 리로드
      - .:/app
      - /app/node_modules
      # 로그 디렉토리 영속화
      - ./logs:/app/logs
    environment:
      - NODE_ENV=development
      - DATABASE_URL=${DATABASE_URL}
      - JWT_SECRET=${JWT_SECRET}
      - LOG_LEVEL=debug
    depends_on:
      mysql:
        condition: service_healthy
    restart: unless-stopped
    networks:
      - backend

  mysql:
    container_name: ${COMPOSE_PROJECT_NAME:-app}-mysql
    image: mysql:8.0
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-app_db}
      MYSQL_USER: ${MYSQL_USER:-user}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password}
    volumes:
      - mysqldata:/var/lib/mysql
      - ./database/mysql/init:/docker-entrypoint-initdb.d
    healthcheck:
      test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
      interval: 10s
      timeout: 5s
      retries: 5
    restart: always
    networks:
      - backend

networks:
  backend:
    driver: bridge

volumes:
  mysqldata:
    driver: local
