x-share-env: &lazy-env LOG_LEVEL: INFO LAZY_PLATFORM_KEY: sk-IrD318oX/wz8bt4Ns37OtiMEzBjvS7Ylf9ZlkFrn59XAQUyzKBs3TUnR WEB_CONSOLE_ENDPOINT: ${WEB_CONSOLE_ENDPOINT:-http://127.0.0.1:30382} # 平台登录的ip+port(例如:http://10.210.0.49:5002),密码重置时给用户发送邮件时使用,供用户跳转到该应用 MIGRATION_ENABLED: 'true' # 当表结构有更新时,是否自动执行数据库迁移操作 RESET_PASSWORD_TOKEN_EXPIRY_HOURS: ${RESET_PASSWORD_TOKEN_EXPIRY_HOURS:-24} # 重置密码过期时间 # tidb DB_USERNAME: root DB_PASSWORD: '' DB_HOST: db DB_PORT: 4000 DB_DATABASE: lazycraft # redis REDIS_HOST: redis REDIS_PORT: 6379 REDIS_USERNAME: '' REDIS_PASSWORD: ${REDIS_PASSWORD:-lazyai123456} REDIS_USE_SSL: 'false' REDIS_DB: 0 CELERY_BROKER_URL: redis://:${REDIS_PASSWORD:-lazyai123456}@redis:6379/1 # 存储 STORAGE_TYPE: local # 存储类型 包括S3、Azure Blob、阿里云 OSS、Google Storage、腾讯 COS、Oracle OCI 存储以及本地存储 STORAGE_LOCAL_PATH: storage # 文件存储在本地时指定路径,支持相对路径和绝对路径 # 邮件 MAIL_TYPE: '' # 设置为smtp表示开启发邮件功能 MAIL_DEFAULT_SEND_FROM: 'no-reply ' SMTP_SERVER: ${SMTP_SERVER:-smtp.qiye.aliyun.com} SMTP_PORT: 465 SMTP_USERNAME: ${SMTP_USERNAME} SMTP_PASSWORD: ${SMTP_PASSWORD} SMTP_USE_TLS: 'true' # 短信 SMS_URL: ${SMS_URL:-http://10.119.27.241:26511/send} # 短信注册服务,后端访问 # GitHub GITHUB_CLIENT_ID: '' GITHUB_CLIENT_SECRET: '' # amp CLOUD_SUPPLIER: ${CLOUD_SUPPLIER:-lazyllm} AMS_ENDPOINT: http://cloud-service:31340 FT_ENDPOINT: http://cloud-service:31341 CONDUCTOR_ENDPOINT: http://api:8087/console/api/data/version/export/ft # sco SCC_ZONE: ${SCC_ZONE:-cn-sh-01a} SCC_ENV: ${SCC_ENV:-cn} SCC_CONTAINER_MOUNTS: ${SCC_CONTAINER_MOUNTS:-b41e67b5-6e82-11ef-bd34-b6137b970450:/home/mnt,ce847c75-6e82-11ef-bd34-b6137b970450:/mnt/lustre/share_data} SCC_IMAGE: ${SCC_IMAGE} LAZYLLM_SLURM_PART: ${LAZYLLM_SLURM_PART:-a800} LAZYLLM_SCO_RESOURCE_TYPE: ${LAZYLLM_SCO_RESOURCE_TYPE:-N3lS.Ii.I60} LAZYLLM_SCO_WORKSPACE: ${LAZYLLM_SCO_WORKSPACE:-expert-services} # layllm LAZYLLM_UPLOAD_PATH: ${LAZYLLM_UPLOAD_PATH:-/mnt/lustre/share_data/lazycraft/upload} # 存放上传文件 LAZYLLM_MODEL_PATH: /mnt/lustre/share_data/models # 推理 微调 模型路径 # models # CONFIG_EXIST_MODEL_PATH: ${CONFIG_EXIST_MODEL_PATH:-/mnt/lustre/share_data/lazycraft/exist_model/config} # 模型检索目录,功能暂不开放 HUGGINGFACE_HUB_CACHE: ${HUGGINGFACE_HUB_CACHE:-/mnt/lustre/share_data/lazycraft/exist_model/config} # 模型下载目录 EXIST_MODEL_PATH: ${EXIST_MODEL_PATH:-/mnt/lustre/share_data/lazycraft/exist_model/models_hub} # 模型存放目录 APP_MODEL_PATH: ${APP_MODEL_PATH:-/app/upload} # 存放上传模型路径 DEFAULT_ICON_PATH: ${DEFAULT_ICON_PATH:-/app/upload/default_icon} # mcp chart工具配置 MINIO_ENDPOINT: minio MINIO_PORT: ${MINIO_PORT:-9000} MINIO_USE_SSL: false MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} MINIO_BUCKET_NAME: ${MINIO_BUCKET_NAME:-mcp-echarts} MINIO_PROXY: ${WEB_CONSOLE_ENDPOINT:-http://127.0.0.1:30382} # 需要从前端访问的地址,同WEB_CONSOLE_ENDPOINT,也支持第三方地址 # mcp DEPLOY_MCP_ENV: ${DEPLOY_MCP_ENV:-docker} MCP_EMAIL_PASSWORD: ${MCP_EMAIL_PASSWORD} # 邮箱授权码 MCP_EMAIL_TYPE: ${MCP_EMAIL_TYPE:-auto} MCP_EMAIL_USER: ${MCP_EMAIL_USER} # 邮箱地址 services: api: image: ${BACK_IMAGE:-registry.cn-hangzhou.aliyuncs.com/lazyllm/lazycraft-back:latest} # lazyllm/lazycraft-back:latest restart: always security_opt: - seccomp:unconfined environment: !!merge <<: *lazy-env MODE: api DEBUG: 'true' # 开启开发模式,代码保存后会自动重启 LAZYLLM_CUDA_VISIBLE: "True" depends_on: - db - redis networks: - lazycraft-network volumes: - ./volumes/app/storage:/app/storage - ./volumes/app/upload:/app/upload - ./volumes/share_data:/mnt/lustre/share_data #模型路径 worker: image: ${BACK_IMAGE:-registry.cn-hangzhou.aliyuncs.com/lazyllm/lazycraft-back:latest} # lazyllm/lazycraft-back:latest restart: always security_opt: - seccomp:unconfined environment: !!merge <<: *lazy-env MODE: worker LAZYLLM_CUDA_VISIBLE: "True" depends_on: - db - redis networks: - lazycraft-network volumes: - ./volumes/app/storage:/app/storage - ./volumes/app/upload:/app/upload - ./volumes/share_data:/mnt/lustre/share_data #模型路径 beat: image: ${BACK_IMAGE:-registry.cn-hangzhou.aliyuncs.com/lazyllm/lazycraft-back:latest} # lazyllm/lazycraft-back:latest restart: always security_opt: - seccomp:unconfined environment: !!merge <<: *lazy-env MODE: beat LAZYLLM_CUDA_VISIBLE: "True" depends_on: - db - redis networks: - lazycraft-network volumes: - ./volumes/app/storage:/app/storage - ./volumes/app/upload:/app/upload - ./volumes/share_data:/mnt/lustre/share_data #模型路径 web: image: ${FRONT_IMAGE:-registry.cn-hangzhou.aliyuncs.com/lazyllm/lazycraft-front:latest} # lazyllm/lazycraft-front:latest restart: always environment: CONSOLE_API_URL: '' APP_API_URL: '' SENTRY_DSN: '' networks: - lazycraft-network pd: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/pd:v8.5.0 # pingcap/pd:v8.5.0 restart: always cap_add: - SYS_ADMIN security_opt: - seccomp:unconfined privileged: true environment: - PD_SERVER_NAME=pd - INITIAL_CLUSTER=pd=http://pd:2380 - ETCD_INITIAL_CLUSTER_STATE=new - TZ=Asia/Shanghai volumes: - ./volumes/pd-data:/pd healthcheck: test: ['CMD', 'wget', '-qO-', 'http://127.0.0.1:2379/health'] interval: 5s timeout: 2s retries: 20 networks: - lazycraft-network # ports: # - "2379:2379" # - "2380:2380" tikv: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/tikv:v8.5.0 # pingcap/tikv:v8.5.0 restart: always cap_add: - SYS_ADMIN security_opt: - seccomp:unconfined privileged: true environment: - PD_ADDR=pd:2379 - TZ=Asia/Shanghai depends_on: - pd volumes: - ./volumes/tikv-data:/tikv networks: - lazycraft-network # ports: # - "20160:20160" db: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/tidb:v8.5.0 # pingcap/tidb:v8.5.0 restart: always cap_add: - SYS_ADMIN security_opt: - seccomp:unconfined privileged: true environment: - PATH="bin:$PATH" - MYSQL_HOST=0.0.0.0 - MYSQL_PORT=4000 - STORE=tikv - PATH=bin:$PATH - PD_ADDR=pd:2379 - TZ=Asia/Shanghai depends_on: - tikv - pd volumes: - ./volumes/tidb-data:/tmp/tidb networks: - lazycraft-network # ports: # - "4000:4000" redis: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/redis:6-alpine # redis:6-alpine restart: always volumes: - ./volumes/redis/data:/data command: redis-server --requirepass ${REDIS_PASSWORD:-lazyai123456} healthcheck: test: ["CMD", "redis-cli", "ping"] networks: - lazycraft-network # ports: # - "6379:6379" mcp-echarts-sse: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/mcp-echarts-mcp-echarts-sse:latest # lazyllm/mcp-echarts-mcp-echarts-sse:latest restart: always command: ["node", "build/index.js", "--transport", "sse", "--port", "3033"] environment: !!merge <<: *lazy-env networks: - lazycraft-network web-search-sse: # 提供网络搜索的sse服务 image: registry.cn-hangzhou.aliyuncs.com/lazyllm/open-web-search:v1.1.5.1 # ghcr.io/aas-ee/open-web-search:v1.1.5.1 working_dir: /app restart: always environment: NODE_ENV: production ENABLE_CORS: "true" CORS_ORIGIN: "*" command: ["node", "build/index.js"] networks: - lazycraft-network minio: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/minio:RELEASE.2025-07-23T15-54-02Z # minio/minio:RELEASE.2025-07-23T15-54-02Z restart: always command: server /data --console-address ":9001" #ports: # - "9000:9000" # API 端口 # - "9001:9001" # 控制台端口 environment: MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} volumes: - ./volumes/minio/data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s timeout: 1s networks: - lazycraft-network init-minio: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/mc:RELEASE.2025-07-21T05-28-08Z # minio/mc:RELEASE.2025-07-21T05-28-08Z depends_on: minio: condition: service_healthy environment: MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} entrypoint: > /bin/sh -c " mc alias set myminio http://minio:9000 $${MINIO_ACCESS_KEY} $${MINIO_SECRET_KEY} --api s3v4 && mc mb myminio/mcp-echarts || true && mc anonymous set download myminio/mcp-echarts && echo '✅ MinIO bucket mcp-echarts is ready and public' " networks: - lazycraft-network nginx: image: registry.cn-hangzhou.aliyuncs.com/lazyllm/nginx:latest # nginx:latest restart: always volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/proxy.conf:/etc/nginx/proxy.conf - ./nginx/conf.d:/etc/nginx/conf.d - ./volumes/app/upload:/app/upload # 静态文件目录,部署脚本一定要放在数据盘,和后端共享 depends_on: - api - web - minio networks: - lazycraft-network ports: - "${PORT:-30382}:80" # cloud-service: # image: registry.cn-hangzhou.aliyuncs.com/lazyllm/lazyllm:0.6.2 # # lazyllm/lazyllm:0.6.2 # restart: always # ports: # - "31340:31340" # 暴露 AMS 服务端口 # - "31341:31341" # 暴露 FT 服务端口 # environment: # !!merge <<: *lazy-env # LAZYLLM_DEFAULT_LAUNCHER: empty # LAZYLLM_CUDA_VISIBLE: "True" # LAZYLLM_TEMP_DIR: /mnt/lustre/share_data/temp # LAZYLLM_INFER_LOG_ROOT: /mnt/lustre/share_data/logs/infer # LAZYLLM_TRAIN_TARGET_ROOT: /mnt/lustre/share_data/finetune_models # entrypoint: > # /bin/bash -lc " # source activate lazyllm && # python -c 'import lazyllm; from lazyllm.tools.infer_service.serve import InferServer; from lazyllm.tools.train_service.serve import TrainServer; inference_service = lazyllm.ServerModule(InferServer(), port=\"31340\", launcher=lazyllm.launcher.EmptyLauncher(sync=False, ngpus=0)); inference_service.start()(); train_service = lazyllm.ServerModule(TrainServer(), port=\"31341\", launcher=lazyllm.launcher.EmptyLauncher(sync=False, ngpus=0)); train_service.start()(); inference_service.wait(); train_service.wait()' && # tail -f /dev/null # " # volumes: # - ./volumes/share_data:/mnt/lustre/share_data #推理 微调模型路径 # networks: # - lazycraft-network # deploy: # resources: # reservations: # devices: # - driver: nvidia # count: "all" # 或者指定用某张卡 device_ids: ['2'] # capabilities: [gpu] networks: lazycraft-network: driver: bridge driver_opts: com.docker.network.driver.mtu: "1400"