version: '3.8' services: api: build: context: . dockerfile: Containerfile.backend container_name: factoryops-dev-api restart: unless-stopped networks: - default - digital-twin ports: - "8000:8000" environment: - PYTHONPATH=/app - PYTHONUNBUFFERED=1 # 원격 DB (IDC 배포서버) - DATABASE_URL=postgresql+asyncpg://factoryops:factoryops@211.115.91.141:8200/factoryops_v2 - JWT_SECRET_KEY=factoryops-v2-dev-secret-key-2026 - CORS_ORIGINS=http://localhost:3100,http://127.0.0.1:3100 - DIGITAL_TWIN_API_URL=http://digital-twin-web-backend:4001 volumes: # 소스 마운트 → 핫 리로드 - ./main.py:/app/main.py:ro - ./src:/app/src:ro - ./alembic:/app/alembic:ro - ./alembic.ini:/app/alembic.ini:ro - ./scripts:/app/scripts:ro # uvicorn --reload 로 실행 (개발용) command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"] dashboard: image: node:20-alpine container_name: factoryops-dev-dashboard restart: unless-stopped working_dir: /app ports: - "3100:3100" environment: - NEXT_PUBLIC_API_URL=http://localhost:8000 - NEXT_TELEMETRY_DISABLED=1 volumes: - ./dashboard:/app - dashboard_node_modules:/app/node_modules # npm install 후 dev 서버 실행 command: ["sh", "-c", "npm install && npm run dev"] depends_on: - api volumes: dashboard_node_modules: networks: default: name: factoryops-dev-network digital-twin: external: true name: digital-twin-web_default