跳到主要内容

Docker Compose

介绍

Docker Compose 作为 CSGHub 常用安装方式之一,具有诸多优势。例如服务管理简单,部署灵活易扩展,快速配置启动等。如果作为生产环境部署,此方式将作为可选方式之一。

软/硬件支持

硬件环境需求:

  • >= 4c 8g 100gb

  • amd64/arm64

软件环境需求:

  • Docker Engine (>=20.10.0)

  • Docker Compose (>=2.20.0)

部署示例

安装包下载

下载请到Release页面。

wget https://opencsg-csghub-compose.oss-cn-beijing.aliyuncs.com/csghub-1.4.0-ee.tgz

安装配置

  • 解压程序

    tar -zxf csghub-docker-compose-v1.4.0-ee.tgz && cd ./csghub
  • 配置更新

    当前此种部署方式建议配置都在.env文件中进行配置。最小配置仅需要配置如下参数即可。

    SERVER_DOMAIN="<domain or ipv4>"
    SERVER_PORT="80"
    SERVER_PROTOCOL="http"

    # 指定是否对接 K8S。 0 接入,1 不接入
    CSGHUB_WITH_K8S=1
    KUBE_CONFIG_DIR=".kube/config"

    # SPACE_APP 部分配置需要提前配置好
    SPACE_APP_NAMESPACE="spaces"
    SPACE_APP_INTERNAL_DOMAIN="app.internal" # 默认为
    SPACE_APP_INTERNAL_HOST="<Kourier Service IP>"
    SPACE_APP_INTERNAL_PORT="<Kourier Service Port>"
  • 开始配置

    此命令是可以用来首次部署也可以用来启动 CSGHub,替代docker compose up -d。因为此脚本每次执行都会渲染配置文件,保持配置的一致性。

    ./configure

    等待程序自动配置启动完成。

  • 访问地址

    服务地址管理员备注
    CSGhubhttp://{{ip address}}root/Root@1234可在 Casdoor 中修改
    Miniohttp://{{ip address}}:9001请查看 .env 中定义的默认账户MINIO_ROOT_USER
    MINIO_ROOT_PASSWORD
    Temporalhttp://{{ip address}}/temporal-ui/请查看 .env 中定义的默认账户TEMPORAL_CONSOLE_USER
    TEMPORAL_CONSOLE_PASSWORD
    Casdoorhttp://{{ip address}}:8000admin/123可在 Casdoor 中修改
    Registry{{ip address}}:5000请查看 .env 中定义的默认账户REGISTRY_USERNAME
    REGISTRY_PASSWORD

版本说明

CSGHub major.minor 版本和 CSGHub Server 保持一致,Patch 版本根据需要更新。

Chart 版本Csghub 版本说明
0.8.x0.8.x
0.9.x0.9.x增加组件 Gitaly, Gitlab-Shell
1.0.x1.0.x
1.1.x1.1.x增加组件 Temporal
1.2.x1.2.x
1.3.x1.3.x移除组件 Gitea
1.4.x1.4.x增加组件 Dataviewer

域名和IP

CSGHub Docker Compose 部署方式在域名和 IP 的使用方式上面较为灵活,既可以使用域名也可以是IPv4

  • 域名

域名可以使用公有域名或者自定义域名。CSGHub Docker Compose 使用单一域名部署,单一域名访问,相较于 CSGHub Helm Chart 方式,在域名使用上会简洁很多。

注意: 如果是自定义域名,请自行配置 Hosts 解析。公有域名,请配置 DNS 云解析。

  • IPv4

IP 地址选择需要使用非 127.0.0.1localhost 的地址。

.kube/config

.kube/config文件作为访问 Kubernetes 集群的重要配置文件,在 CSGHub Docker Compose 部署过程中直接以文件路径方式提供给安装程序。此 .kube/config至少需要包含对目标集群部署实例所在的命名空间的完全读写权限。

注意: 后续版本中如果开启了 argo和 KnativeServing 的自动配置,还需要创建命名空间等更多权限。

数据持久化

为了方便使用和管理,此种部署方式直接使用 Volume Mount/Directory Mapping存储持久化数据,默认存放在安装目录下的data目录中,以./data/<component>的方式分开存储。

此外所有配置文件均存储在./configs目录下。

外部资源

提示: 使用外置服务的同时如果内置服务不禁用,则服务依然会正常启动。

注意: 因为 docker compose 中服务是否启动控制并不是很灵活,如果以下变量直接配置为外部服务,也可切换为使用外部服务。同时以下配置也可以修改内部服务配置。

Registry

变量类型默认值说明
REGISTRY_ENABLEDnumber11: 使用内置 Registry
0: 禁用内置 Registry
REGISTRY_PORTnumber5000Registry 服务端口号,80 请置空。
REGISTRY_ADDRESSstringSERVERDOMAIN:{SERVER_DOMAIN}:{REGISTRY_PORT}指定 Registry 端点。
REGISTRY_NAMESPACEstringcsghub指定 Registry 使用的命名空间。
REGISTRY_USERNAMEstringregistry指定访问 Registry 的用户名
REGISTRY_PASSWORDstringRegistry@2025!指定访问 Registry 的密码

PostgreSQL

注意: 请自行创建数据库 csghub_server, csghub_portal, casdoor, temporal 。

变量类型默认值说明
POSTGRES_ENABLEDnumber11: 使用内置 PostgreSQL
0: 禁用内置 PostgreSQL
POSTGRES_HOSTstringpostgresPostgreSQL 服务地址。
POSTGRES_PORTnumber5432指定 PostgreSQL 服务端口号。
POSTGRES_TIMEZONEstringAsia/Shanghai默认即可。无实际意义,无须配置。
POSTGRES_USERstringcsghub指定连接 PostgreSQL 的用户名
POSTGRES_PASSWORDstringCsghub@2025!指定连接 PostgreSQL 的密码

ObjectStore

变量类型默认值说明
MINIO_ENABLEDnumber11: 使用内置对象存储
0: 禁用内置对象存储
MINIO_API_PORTnumber9000Minio API服务端口号。
MINIO_CONSOLE_PORTnumber9001Minio Console 服务端口号。
MINIO_ENDPOINTstringSERVERDOMAIN:{SERVER_DOMAIN}:{MINIO_API_PORT}指定对象存储使用的命名空间。
MINIO_EXTERNAL_ENDPOINTstring/外部对象存储和MINIO_ENDPOINT一致,否则置空。
MINIO_ROOT_USERstringminio指定访问对象存储的用户名。
MINIO_ROOT_PASSWORDstringMinio@2025!指定访问对象存储的密码。
MINIO_REGIONstringcn-north-1指定对象存储区域。
MINIO_ENABLE_SSLboolfalse指定对象存储是否开启加密访问。
USING_PATH_STYLEbooltrue执行对象存储存储桶访问方式是否使用 path 方式。

其他变量

Image 配置

变量类型默认值说明
CSGHUB_IMAGE_PREFIXstringopencsg-registry.cn-beijing.cr.aliyuncs.com/opencsg_public这里仅支持使用公有镜像仓库。
CSGHUB_VERSIONstringlatest指定 csghub_portal 和 csghub_server 服务的镜像版本。

Nginx 配置

变量类型默认值说明
SERVER_DOMAINstringcsghub.example.com指定配置 CSGHub 使用的域名或 IPv4。
SERVER_PORTnumber80指定 NGINX 监听端口,加密访问请配置为 443。
SERVER_PROTOCOLstringhttp指定 URL 协议,加密访问请配置为 https。
SERVER_SSL_CERTstring/指开启加密访问的证书。
SERVER_SSL_KEYstring/指开启加密访问的私钥。

CSGHub Portal 配置

变量类型默认值说明
CSGHUB_PORTAL_ENABLE_HTTPSboolfalse如果 NGINX 配置为加密访问,此处需配置为 true。

Git 配置

变量类型默认值说明
GIT_SSH_PORTnumber2222配置 Git Over SSH 使用的端口号,不能和本地 SSHD 服务冲突。

Kubernetes 配置

变量类型默认值说明
CSGHUB_WITH_K8Snumber01: 对接 K8S
0: 不对接 K8S。
KUBE_CONFIG_DIRstring/root/.kube存放 config 文件的路径,多个 config 文件需重命名为以 config 开头的文件。

Space Application 配置

变量类型默认值说明
SPACE_APP_NAMESPACEstringspaces创建各类部署实例所在的 K8S 命名空间(会自动创建)。
SPACE_APP_INTERNAL_DOMAINstringapp.internalKnativeServing 配置使用的域名。
SPACE_APP_INTERNAL_HOSTstring127.0.0.1KnativeServing 配置使用的 Kourier 的访问地址。根据实际填写,不可设置为 127.0.0.1 或 localhost。
SPACE_APP_INTERNAL_PORTnumber30541KnativeServing 配置使用的 Kourier 的访问端口。根据实际填写。

Gitaly 配置

变量类型默认值说明
GITALY_ENABLEDnumber11: 使用内置 Gitaly
0: 禁用内置 Gitaly。
GITALY_SERVER_SOCKETstringtcp://gitaly:8075Gitaly 服务地址。
GITALY_STORAGEstringdefault保持默认即可。
GITALY_AUTH_TOKENstringGitaly@2025!指定连接到 Gitaly 服务的验证 Token。

Temporal 配置

变量类型默认值说明
TEMPORAL_UI_ENABLEDnumber1启用 UI 访问服务。
TEMPORAL_CONSOLE_USERstringtemporal指定访问 Temporal 服务的用户名。
TEMPORAL_CONSOLE_PASSWORDstringTemporal@2025!指定访问 Temporal 服务的密码。

Casdoor 配置

变量类型默认值说明
CASDOOR_SMTP_ENABLEDboolfalse指定是否启用 SMTP。
CASDOOR_SMTP_HOSTstringsmtp.163.com指定 SMTP 服务地址。
CASDOOR_SMTP_PORTnumber463指定 SMTP 服务端口。
CASDOOR_SMTP_USERNAMEstringNull指定验证 SMTP 服务的用户名。
CASDOOR_SMTP_PASSWORDstringNull指定验证 SMTP 服务的密码。
CASDOOR_SMTP_EMAIL_FROMstringNull指定发件人(通常和 username 一致)。
CASDOOR_SMTP_EMAIL_NAMEstringNull指定发送后的邮件名称。
CASDOOR_SMTP_USE_SSLbooltrue指定是否启用 SSL/TLS 加密。

Nats 配置

请保持默认。

Fixed 配置

请保持默认。

故障排查

http: server gave HTTP response to HTTPS client

CSGHub 默认安装使用不安全的 registry(即上面提到的:<domain or IPv4>:5000),需要确保 Kubernetes 可以从这个 registry 拉取镜像。因此在 Kubernetes 的每个节点上需做如下配置:

  1. 配置前请确认配置文件 /etc/containerd/config.toml 是否存在,若不存在,可以使用以下命令创建。
mkdir -p /etc/containerd/ && containerd config default >/etc/containerd/config.toml
  1. 配置 config_path

    • Containerd 1.x

      version = 2

      [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"
    • Containerd 2.x

       version = 3

      [plugins."io.containerd.cri.v1.images".registry]
      config_path = "/etc/containerd/certs.d"
  2. 配置 hosts.toml

    # 创建 Registry 配置目录
    mkdir /etc/containerd/certs.d/<domain or IPv4>:5000

    # 定义配置
    cat /etc/containerd/certs.d/<domain or IPv4>:5000/hosts.toml
    server = "http://<domain or IPv4>:5000"

    [host."http://<domain or IPv4>:5000"]
    capabilities = ["pull", "resolve", "push"]
    skip_verify = true
    plain-http = true
    EOF
  3. 重启 containerd 服务

    systemctl restart containerd

问题反馈

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