version: '3.8' services: web: image: nginx:alpine restart: unless-stopped ports: - "${GATEWAY_PORT:-8888}:80" volumes: - ./default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - backend - runtime backend: build: context: . dockerfile: backend/Dockerfile restart: unless-stopped environment: DATABASE_URL: mysql+asyncmy://${MYSQL_USER:-model_platform}:${MYSQL_PASSWORD:-model_platform}@mysql:3306/${MYSQL_DATABASE:-model_platform}?charset=utf8mb4 JWT_SECRET: ${JWT_SECRET:-local-jwt-secret} RUNTIME_API_URL: http://runtime:8000 RUNTIME_BASE_URL: http://runtime:8000 RUSTFS_INTERNAL_ENDPOINT: http://rustfs:9000 RUSTFS_PUBLIC_ENDPOINT: http://localhost:${RUSTFS_API_PORT:-9010} RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY:-modelplatform} RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY:-modelplatformsecret} RUSTFS_DEFAULT_BUCKET: model-platform WORKSPACE_ROOT: /workspace/workspaces volumes: - ./deploy/data/workspaces:/workspace/workspaces - ./backend:/app/backend:ro - ./common:/app/common:ro ports: - "${BACKEND_PORT:-8004}:8000" depends_on: - runtime runtime: build: context: . dockerfile: runtime/Dockerfile restart: unless-stopped cap_add: - SYS_ADMIN devices: - /dev/fuse:/dev/fuse security_opt: - apparmor:unconfined environment: DATABASE_URL: mysql+asyncmy://${MYSQL_USER:-model_platform}:${MYSQL_PASSWORD:-model_platform}@mysql:3306/${MYSQL_DATABASE:-model_platform}?charset=utf8mb4 SERVICE_NAME: runtime-manager REDIS_HOST: redis REDIS_PORT: "6379" REDIS_PASSWORD: ${REDIS_PASSWORD:-model_platform_redis} FILE_LOCK_ENABLED: "false" JUPYTER_INTERNAL_URL: http://jupyter:8888/jupyter/ JUPYTER_PROXY_BASE_PATH: /jupyter/ JUPYTER_TICKET_TTL_SECONDS: "300" WORKSPACES_ROOT: /workspace/workspaces PUBLIC_BASE_URL: http://runtime REMOTE_BUCKET: rustfs:workspaces RCLONE_CONFIG_RUSTFS_TYPE: s3 RCLONE_CONFIG_RUSTFS_PROVIDER: Other RCLONE_CONFIG_RUSTFS_ACCESS_KEY_ID: ${RUSTFS_ACCESS_KEY:-modelplatform} RCLONE_CONFIG_RUSTFS_SECRET_ACCESS_KEY: ${RUSTFS_SECRET_KEY:-modelplatformsecret} RCLONE_CONFIG_RUSTFS_ENDPOINT: http://rustfs:9000 RCLONE_CONFIG_RUSTFS_ENV_AUTH: "false" RCLONE_CONFIG_RUSTFS_FORCE_PATH_STYLE: "true" RCLONE_CONFIG_RUSTFS_REGION: other volumes: - ./deploy/data/workspaces:/workspace/workspaces - ./runtime:/app/runtime:ro - ./common:/app/common:ro ports: - "${RUNTIME_PORT:-8002}:8001" schedule: build: context: . dockerfile: schedule/Dockerfile restart: unless-stopped environment: DATABASE_URL: mysql+asyncmy://${MYSQL_USER:-model_platform}:${MYSQL_PASSWORD:-model_platform}@mysql:3306/${MYSQL_DATABASE:-model_platform}?charset=utf8mb4 REDIS_HOST: redis REDIS_PORT: "6379" REDIS_PASSWORD: ${REDIS_PASSWORD:-model_platform_redis} RUSTFS_INTERNAL_ENDPOINT: http://rustfs:9000 RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY:-modelplatform} RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY:-modelplatformsecret} STORAGE_API_URL: http://backend:8000 WORKSPACE_ROOT: /workspace/workspaces volumes: - ./deploy/data/workspaces:/workspace/workspaces ports: - "${SCHEDULE_PORT:-8013}:8000" depends_on: - backend