跳到主要内容

Docker Compose

优势

  • 简化管理:通过 Docker Compose 统一编排所有服务依赖
  • 快速部署:一键启动完整的 CSGHub 服务栈
  • 灵活扩展:支持横向扩展服务实例,按需调整资源配置和服务规模
  • 生产就绪:满足中小企业级应用部署要求

提示: 建议使用 Docker Compose 进行安装。

适用场景

  • 快速搭建 CSGHub 演示环境
  • 快速验证 CSGHub 功能
  • 开发测试环境部署
  • 中小规模生产环境部署

功能说明

根据配置复杂度,提供两种启动模式:

  • 基本功能:除模型评测、推理、微调、应用空间、MCP 以外的所有功能功能(以上功能依赖 Kubernetes 集群)。

  • 完整功能:包含 ce/ee 全部功能。

    如果使用完整功能,请配置docker-compose.yml启用 runner以及映射.kube/config文件到容器。注意:请保证.kube/config中的 API Server 地址在容器中可访问。

注意: 使用 IP 地址访问时,MCP 功能将受限(该功能需域名支持)。

系统要求

硬件要求

资源类型最低配置推荐配置更多
CPU/内存4 cores 8GB8 cores 16GB
处理器架构-AMD64/ARM64支持x86和ARM架构

软件要求

组件版本要求验证命令其他依赖
Docker Engine≥ 20.10.0docker --version
Docker Compose≥ 2.0.0docker compose version
Kubernetes1.28+ (可选)kubectl version1. Nvidia GPU支持需要自行安装Nvidia Device Plugin
2. 支持 Dynamic Volume Provisioning

说明: 启用完整功能需要依赖 Kubernetes,否则模型评测、推理、微调,MCP, 应用空间等功能将不可用。

安装部署

注意: csghub.external_url中默认使用 80 端口号(默认端口号:80可忽略不写),如果修改 ports 80的对外映射端口,务必保证 external_url 中使用相同的端口号。

CE版本

  • docker-compose.yml

    services:
    csghub:
    image: opencsg-registry.cn-beijing.cr.aliyuncs.com/opencsghq/omnibus-csghub:v1.9.0-ce
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    csghub:
    external_url: "http://csghub.example.com" # 访问 CSGHub 实例域名,建议使用域名方式配置
    runner: # 仅使用完整功能时需要,基本功能安装可移除此项
    enable: true # 是否启用 Runner 服务,禁用则仅能使用基础功能
    deploy:
    knative:
    services:
    - type: "NodePort" # 如果 Kubernetes 集群支持 LoadBalancer,可以使用 LoadBalancer
    domain: "app.internal" # 自定义 Knative Serving 内部域名
    host: "192.168.18.10" # 暴露 kourier 服务的 EXTERNAL-IP
    port: 30123 # 自定义端口号,type=LoadBalancer, 请指定为 80
    ports:
    - '80:80' # Nginx
    - '2222:2222' # Git Over SSH
    - '5000:5000' # Container Registry
    - '8000:8000' # Casdoor
    - '9000:9000' # Minio
    volumes:
    - ./csghub/etc:/etc/csghub
    - ./csghub/logs:/var/log/csghub
    - ./csghub/data:/var/opt/csghub
    - ./csghub/.kube:/etc/csghub/.kube # 仅使用完整功能时需要,基本功能安装可移除此项
    restart: always
    shm_size: '256m'

    更多配置见 csghub.yaml.sample

  • 启动服务

    docker compose up -d && docker compose ps

    注意: 如果 Kubernetes 集群未就绪请设置environment.CSGHUB_OMNIBUS_CONFIG.runner.enable=false(即安装使用基本功能)。

  • 停止服务

    docker compose down 

EE版本

  • docker-compose.yml

    services:
    csghub:
    image: opencsg-registry.cn-beijing.cr.aliyuncs.com/opencsghq/omnibus-csghub:v1.9.0-ee
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    csghub:
    external_url: "http://csghub.example.com" # 访问 CSGHub 实例域名,建议使用域名方式配置
    runner: # 仅使用完整功能时需要,基本功能安装可移除此项
    enable: true # 是否启用 Runner 服务,禁用则仅能使用基础功能
    deploy:
    knative:
    services:
    - type: "NodePort" # 如果 Kubernetes 集群支持 LoadBalancer,可以使用 NodePort
    domain: "app.internal" # 自定义 Knative Serving 内部域名
    host: "192.168.18.10" # 暴露 kourier 服务的 EXTERNAL-IP
    port: 30123 # 自定义端口号,type=LoadBalancer, 请指定为 80
    server:
    dataflow:
    address: "http://dataflow:8000" # Dataflow 地址
    starship:
    enable: true # 启用 Starship 编码助手
    ports:
    - '80:80' # Nginx
    - '2222:2222' # Git Over SSH
    - '5000:5000' # Container Registry
    - '8000:8000' # Casdoor
    - '8001:8001' # Starship Portal
    - '8002:8002' # Starship-API Admin Console
    - '9000:9000' # Minio
    - '9001:9001' # Minio Admin UI
    volumes:
    - ./csghub/etc:/etc/csghub
    - ./csghub/logs:/var/log/csghub
    - ./csghub/data:/var/opt/csghub
    - ./csghub/.kube:/etc/csghub/.kube # 仅使用完整功能时需要,基本功能安装可移除此项
    restart: always
    shm_size: '256m'

    dataflow: # Dataflow 为 CSGHub 数据集处理模块,可按需启用
    image: opencsg-registry.cn-beijing.cr.aliyuncs.com/opencsghq/dataflow:latest
    environment:
    CSGHUB_ENDPOINT: "http://csghub.example.com"
    DATABASE_HOSTNAME: "csghub"
    DATABASE_PORT: "5432"
    DATABASE_USERNAME: "dataflow"
    DATABASE_PASSWORD: "8f444970fcde559c"
    DATABASE_DB: "dataflow"
    DATA_DIR: "/data"
    MAX_WORKERS: 50
    RAY_ADDRESS: "auto"
    RAY_ENABLE: false
    RAY_LOG_DIR: "/var/log/dataflow"
    API_SERVER: "0.0.0.0"
    API_PORT: 8000
    AZURE_OPENAI_ENDPOINT: "$AZURE_OPENAI_ENDPOINT"
    AZURE_OPENAI_API_KEY: "$AZURE_OPENAI_ENDPOINT"
    OPENAI_API_VERSION: "$OPENAI_API_VERSION"
    AZURE_MODEL: "$AZURE_MODEL"
    ENABLE_OPENTELEMETRY: false
    volumes:
    - ./csghub/data/dataflow:/data
    - ./csghub/logs/dataflow:/var/log/dataflow
    restart: always
  • 启动服务

    docker compose up -d && docker compose ps
  • 停止服务

    docker compose down 

实例访问

  1. 实例 URL

    见 docker-compose.yml 中的 csghub.external_url

  2. 登录 csghub 容器

    docker compose ps && docker exec -it <container> bash 
  3. 查看默认管理员账户密码

    cat /etc/csghub/init_root_password

配置说明(从高到低)

  1. 环境变量配置
    • CSGHUB_OMNIBUS_CONFIG 作用: 通过 Docker Compose 启动时注入动态配置参数 特点: 具有最高优先级,会覆盖其他配置源的相同参数 使用场景: 适合临时调整或容器化部署时的参数注入
  2. 主配置文件
    • /etc/csghub/csghub.yaml 内容: 完整参数集合,支持所有可配置项 建议: 仅需按需修改关键参数,未配置项自动继承默认值 权限: 建议保留系统默认权限(通常需 root 权限修改)
  3. 默认配置基准
    • /opt/csghub/etc/csghub/default.yaml 作用: 提供所有参数的基准默认值 特点:
      • 优先级最低,仅当其他配置未定义时生效
      • 不建议直接修改(升级时可能被覆盖)
      • 可作为配置模板参考

更多配置见 csghub.yaml.sample

服务管理

  • csghub-ctl

    CommandDescription
    --help查看帮助
    reconfigure刷新所有服务配置文件并按需重启服务
    start启动服务
    restart重启服务
    stop停止服务
    reload重载服务
    tail跟踪服务日志
    status查看服务状态
  • csghub-psql: 快速访问 csghub_server 数据库

常见问题

关于 .kube/config

.kube/config文件作为访问 Kubernetes 集群的重要配置文件,在 CSGHub 运行时会依赖此文件。

关于外置服务

默认情况下以下组件会通过runner.deploy.autoConfigure=true来进行自动配置,此配置需要依赖启动服务时传入的runner.deploy.knative.services[]参数。如果存在一些原因无法完整自动配置,可以尝试通过以下方式手动安装配置:

修改端口号映射

目前对外暴露的端口号一共有以下:

  • '80:80' # Nginx

  • '2222:2222' # Git Over SSH

  • '5000:5000' # Container Registry

  • '8000:8000' # Casdoor

  • '8001:8001' # Starship Portal

  • '8002:8002' # Starship-API Admin Console

  • '9000:9000' # Minio

  • '9001:9001' # Minio Admin UI

  • 修改 Nginx 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    csghub:
    external_url: "http://csghub.example.com:8080"
    ports:
    - '8080:80' # 仅修改对外端口号
    ......

  • 修改 Git Over SSH 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    gitlab_shell:
    ssh_port: 22222
    ports:
    - '22222:22222' # 修改内外端口号
    ......
  • 修改 Container Registry 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    csghub:
    external_url: "http://csghub.example.com:8080"
    runner:
    registry:
    prefix: "csghub.example.com:5001/csghub/"
    ports:
    - '5001:5000' # 仅修改对外端口号
    ......
  • 修改 Casdoor 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    casdoor:
    listen: "127.0.0.1:8005"
    ports:
    - '8005:8005' # 修改内外端口号
    ......
  • 修改 Starship 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    starship:
    listen:
    frontend: "127.0.0.1:8006"
    api: "127.0.0.1:8007"
    ports:
    - '8006:8006' # 修改内外端口号
    - '8007:8007' # 修改内外端口号
    ......
  • 修改 Minio 端口号

    services:
    ......
    environment:
    CSGHUB_OMNIBUS_CONFIG: |
    csghub:
    external_url: "http://csghub.example.com:8080"
    server:
    s3:
    endpoint: "csghub.example.com:9005"
    internal_endpoint: "127.0.0.1:9000"
    portal:
    s3:
    endpoint: "csghub.example.com:9005"
    registry:
    storage:
    s3:
    regionendpoint: "http://csghub.example.com:9005"
    ports:
    - '9005:9000' # 仅修改对外端口号
    - '9006:9001' # 仅修改对外端口号
    ......

问题反馈

如遇使用过程中遇到任何问题可以通过方式提交反馈: