# 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(
java、mvn在PATH) - 可访问 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/ 构建再 pull、docker-compose up -d。 |
update.sh | 日常更新:按 services.conf 拉代码、构建、滚动更新容器等。 |
SSL:入口 Nginx HTTPS 依赖 ssl/server.crt 与 ssl/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_PORT、NGINX_HTTP_PORT、NGINX_HTTPS_PORT、MYSQL_*、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 <服务名>