# g2rain-deploy(Docker Compose 部署)

g2rain-deploy 提供基于 Docker Compose 的 G2rain 开源 SaaS 平台 一键式部署配置与脚本:推荐先执行 init-once.sh 完成环境、SQL 占位符替换、源码克隆与默认镜像构建,再执行 start.sh 启动栈;日常迭代使用 update.sh

脚本与 Compose 版本以仓库为准;下列为常用心智模型摘要。

源码仓库github.com/g2rain/g2rain-deploy (opens new window)

# 与开源模块的关系

本仓库不是业务微服务,而是 运维交付入口:将 g2rain-main-shell、网关、IAM、basis、infra 等镜像与 MySQL / Redis / Nacos / Nginx 等组合为可运行栈。各业务仓库克隆到本地 codes/ 目录(由 init-once.sh 创建,通常已 .gitignore)。

# 环境要求

运行 Compose 与脚本:

  • Docker 20.10+
  • 可用的 docker-compose(或文档所述的 docker compose 兼容用法)
  • 建议至少 4GB 内存、10GB+ 磁盘(含镜像、data/codes/

首次 ./init-once.sh(克隆并默认执行各仓 build.sh)还需:

  • Git、JDK、Maven(javamvnPATH
  • 可访问 Git 远端;默认克隆前缀可通过 G2RAIN_GIT_BASE(如 https://github.com/g2rain)调整

首次完整构建常见 约 20~60 分钟(视机器与网络而定)。

# 脚本职责(推荐顺序)

脚本 作用
init-once.sh 一次性:生成 .env、替换 config/mysql/g2rain-basis.sql 中平台占位符、可选 SSL、按 services.conf 克隆到 codes/、默认在各仓库执行 build.sh(可配置重试);成功后写入 .g2rain-deploy-install.done。不执行 docker compose up
start.sh 重复执行:检查依赖与证书、缺镜像时尝试从 codes/ 构建再 pulldocker-compose up -d
update.sh 日常更新:按 services.conf 拉代码、构建、滚动更新容器等。

SSL:入口 Nginx HTTPS 依赖 ssl/server.crtssl/server.key;缺失时 start.sh 通常会阻止启动。可使用 ./config/generate-ssl.sh <IP或域名>init-once.sh / start.sh 的 SSL 相关参数生成自签名证书(浏览器会提示风险)。

MySQL 初始化:业务 SQL 多在 data/mysql 为空、容器首次执行 docker-entrypoint-initdb.d 时导入;已有数据卷时,事后改 SQL 或 .env 不会自动覆盖库内旧数据,需自行迁移或清空卷后重装。

# 快速路径(示例)

./init-once.sh
./config/generate-ssl.sh <服务器IP或域名>
./start.sh

更多参数(--host--port--skip-build--force 等)见仓库内 ./init-once.sh --help./start.sh --help

# 目录与配置要点

g2rain-deploy/
├── docker-compose.yml
├── env.example              # 复制为 .env
├── services.conf            # 克隆目录、compose 服务、build 命令映射
├── init-once.sh / start.sh / stop.sh / update.sh
├── config/                  # mysql、redis、nginx、nacos、SSL 与密钥脚本
├── codes/                   # 克隆的业务仓库(通常 gitignore)
├── data/ / logs/ / ssl/
  • services.conf:Bash 片段,定义 SERVICES 数组(如 repo|dir|compose_service|build_cmd),供 init / update / start(缺镜像时)使用。
  • .env:从 env.example 复制;含 PLATFORM_HOST / PLATFORM_PORTNGINX_HTTP_PORTNGINX_HTTPS_PORTMYSQL_*REDIS_* 等(完整列表以 env.example 为准)。

默认访问端口以 .env 为准;README 中常见示例为 HTTP http://localhost:10080、HTTPS https://localhost:10443(自签名)。

# 与子应用路径对齐

在 Nginx 中为每个前端子应用配置 location,路径须与该应用的 VITE_CONTEXT_PATH / VITE_BASE_URL 一致;示例与 locations.inc 修改方式见部署仓库 README。修改后通常需 docker-compose restart nginx

前端 ES256 密钥可使用仓库内 ./config/generate_key.sh;IAM 公钥与 iam-key-id 等文件需按 README 放到对应 config/<项目>/keys/

# 日常运维

./update.sh                  # 全量更新示例
./stop.sh                    # 停止;可加 --cleanup 清理容器
docker-compose ps
docker-compose logs -f <服务名>

# 相关文档