4.8 KiB
console 管理后台部署
把单服务 console(lego single 服务,维护 app_registry、跨应用统计)打成镜像 starpivot-console,
推送到私有仓库 docker-registry.ideapsound.com,再到目标机拉取重启。依赖 PostgreSQL / Redis / NATS
由目标环境共享提供(在 .env 里填地址/容器名),不在此 compose 内搭建。
约定(与 voitrans 一致):仓库只提交模板(
*.example)。部署脚本会把模板 +docker-compose.yml同步到服务器, 但绝不上传/覆盖你在服务器上填好的真实.env/confs/console.yaml(首次需登录服务器照模板复制并填值)。
文件
| 文件 | 说明 |
|---|---|
../../apps/services/Dockerfile.console |
镜像构建(编译 console 二进制 + entrypoint + 内置 consoleweb 静态),构建上下文 = apps/services/ |
../../apps/services/entrypoint.console.sh |
容器入口 |
docker-compose.yml |
运行镜像 starpivot-console,挂 ./confs、./log,.env 注入容器(此文件由你放到服务器) |
confs/console.yaml.example |
console 配置模板;真实 console.yaml 被 gitignore,密钥/端点用 ${VAR} 由 .env 注入 |
env/env.example |
运行时环境模板(只一份,不分环境);真实 .env 被 gitignore |
dev-deploy.sh |
开发:构建 dev 镜像 → 推送 → 远端拉取重启(固定 tag dev-latest) |
prod-build.sh |
生产①:构建带版本号镜像并推送(:版本 + :latest),不部署 |
prod-deploy.sh |
生产②:部署指定版本到指定生产环境(yunyan/lingpu),支持回滚 |
用法
本地(local)
本机直接起容器(用本目录的 .env 与 confs/,自行从 *.example 复制填写):
cd deploy/console
cp env/env.example .env # 填真实值
cp confs/console.yaml.example confs/console.yaml
docker compose --env-file .env up -d # 本机起 starpivot-console
服务器准备(dev / prod,一次性)
脚本每次会同步 docker-compose.yml + *.example 模板到目标机。首次需登录服务器把模板复制成真实文件并填值
(cp env.example .env、cp confs/console.yaml.example confs/console.yaml,dev-deploy 缺真实文件时也会打印这两条命令):
<部署目录>/ # dev / prod 均默认 /home/work/starpivot/console
├── docker-compose.yml # 从本目录拷贝
├── .env # 照 env/env.example 填(POSTGRES_DSN/REDIS_*/NATS_URL/
│ # CONSOLE_TOKEN_KEY/CONSOLE_ADMIN_*/FIELD_ENCRYPT_KEY 等)
├── confs/console.yaml # 照 confs/console.yaml.example 填
└── log/ # 日志目录
部署
cd deploy/console
./dev-deploy.sh lingpu # 开发:发布到灵谱测试环境(构建 dev-latest → 推送 → 远端拉取重启)
./dev-deploy.sh yunyan # 开发:发布到云雁测试环境
./dev-deploy.sh # 不带参数 → 交互选择测试环境
./prod-build.sh 0.1.1 yunyan # 生产①:构建并推送 starpivot-console:0.1.1 (+latest);第2参数选公司
./prod-deploy.sh 0.1.1 lingpu # 生产②:部署 0.1.1 到指定生产环境(yunyan|lingpu),省略环境则交互选
./prod-deploy.sh rollback lingpu # 生产回滚到上一版本(与当前版本来回切换)
改了服务器上的
.env后,必须经up(脚本里的docker compose up -d)重建容器才生效,restart不会重读环境变量。 生产版本/回滚记录存服务器上的.deploy_tag/.deploy_tag.prev,不动你维护的.env。
需要填写 / 提供的东西
- 部署目标与凭据:写死在各脚本顶部。
dev-deploy.sh的env_profile()(每个测试环境一套REGISTRY/DEV_HOST/DEV_KEY/DEV_DIR,现有lingpu、yunyan;新增环境加一段 case 并写进ENVS)、prod-deploy.sh的env_profile()(每个生产环境一套REGISTRY/IMAGE_NAME/DEPLOY_HOST/DEPLOY_KEY/DEPLOY_DIR,现有yunyan、lingpu;新增环境加一段 case 并写进PROD_ENVS); 仓库账号admin/ 密码已写死;DEPLOY_KEY默认~/.ssh/id_rsa。- ⚠️ 本目录脚本纳入 git,公开仓库前务必清空
*_HOST与REGISTRY_PASS。
- ⚠️ 本目录脚本纳入 git,公开仓库前务必清空
- 依赖端点:填服务器
.env的POSTGRES_DSN / REDIS_* / NATS_URL,以及CONSOLE_TOKEN_KEY、 超管账号CONSOLE_ADMIN_ACCOUNT/PASSWORD、字段加密FIELD_ENCRYPT_KEY、站点名CONSOLE_SITE_NAME。
端口
console HTTP 8080(容器内,对外经反代/NPM 暴露)。依赖的 postgres / redis / nats 须可达
(同 DOCKER_NETWORK,默认 1panel-network,用容器名,或在 .env 填外部地址)。