|
|
2 months ago | |
|---|---|---|
| .. | ||
| env | 3 months ago | |
| README.md | 2 months ago | |
| deploy.sh | 2 months ago | |
| dev-deploy.sh | 2 months ago | |
| docker-compose.yml | 2 months ago | |
| prod-build.sh | 2 months ago | |
| prod-deploy.sh | 2 months ago | |
README.md
admin 管理前端部署
把 Nuxt 4 SSR 管理后台 admin 打成镜像 starpivot-admin,推送到私有仓库
docker-registry.ideapsound.com,再到目标机拉取重启。它本身不连数据库,只通过
CONSOLE_BACKEND 把 /web/api、/console/api 代理到同网络的 console 后端(容器名 starpivot-console)。
约定(与 console 一致):仓库只提交模板(
*.example)。部署脚本会把模板 +docker-compose.yml同步到服务器, 但绝不上传/覆盖你在服务器上填好的真实.env(首次需登录服务器照模板复制并填值)。admin 没有 yaml 配置,全靠.env。
文件
| 文件 | 说明 |
|---|---|
../../apps/admin/Dockerfile |
镜像构建(Nuxt SSR:pnpm build → node server),构建上下文 = apps/admin/ |
docker-compose.yml |
运行镜像 starpivot-admin,.env 注入容器,只 expose 3000(经反代对外) |
env/env.example |
运行时环境模板(只一份,不分环境);真实 .env 被 gitignore |
dev-deploy.sh |
开发:构建 dev 镜像 → 推送 → 远端拉取重启(固定 tag dev-latest) |
prod-build.sh |
生产①:构建带版本号镜像并推送(:版本 + :latest),不部署 |
prod-deploy.sh |
生产②:部署指定版本到指定生产环境(yunyan/lingpu),支持回滚 |
用法
本地(local)
本机直接起容器(用本目录的 .env,自行从 env/env.example 复制填写):
cd deploy/admin
cp env/env.example .env # 填真实值(至少 CONSOLE_BACKEND)
docker compose up -d # 本机起 starpivot-admin
服务器准备(dev / prod,一次性)
脚本每次会同步 docker-compose.yml + env/env.example 模板到目标机。首次需登录服务器把模板复制成真实 .env 并填值
(cp env.example .env,dev-deploy 缺真实文件时也会打印该命令):
<部署目录>/ # dev / prod 均默认 /home/work/starpivot/admin
├── docker-compose.yml # 从本目录拷贝
└── .env # 照 env.example 填(CONSOLE_BACKEND / TAG / DOCKER_NETWORK)
部署
cd deploy/admin
./dev-deploy.sh lingpu # 开发:发布到灵谱测试环境(构建 dev-latest → 推送 → 远端拉取重启)
./dev-deploy.sh yunyan # 开发:发布到云雁测试环境
./dev-deploy.sh # 不带参数 → 交互选择测试环境
./prod-build.sh 0.1.1 yunyan # 生产①:构建并推送 starpivot-admin:0.1.1 (+latest);第2参数选公司
./prod-deploy.sh 0.1.1 lingpu # 生产②:部署 0.1.1 到指定生产环境(yunyan|lingpu|along),省略环境则交互选
./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、along;新增环境加一段 case 并写进ENVS)、prod-deploy.sh的env_profile()(每个生产环境一套REGISTRY/IMAGE_NAME/DEPLOY_HOST/DEPLOY_KEY/DEPLOY_DIR,现有yunyan、lingpu、along;新增环境加一段 case 并写进PROD_ENVS); 仓库账号admin/ 密码已写死;DEPLOY_KEY默认/Users/liwei/Documents/key/yunyan-us.pem(prod)。- ⚠️ 本目录脚本纳入 git,公开仓库前务必清空
*_HOST与REGISTRY_PASS。
- ⚠️ 本目录脚本纳入 git,公开仓库前务必清空
- 后端地址:
.env的CONSOLE_BACKEND,须指向同网络的 console 容器,默认http://starpivot-console:8080。
端口与反代
admin HTTP 3000(容器内,只 expose 不 publish)。须由 1panel 反代 / NPM 把后台域名
(如 console.yunyanservice.xyz)转发到 starpivot-admin:3000。admin 再在内部把 /web/api、/console/api
代理到 starpivot-console:8080,所以单域名即可跑通整套(浏览器 → 反代 → starpivot-admin → starpivot-console)。
admin 与 console 须在同一 DOCKER_NETWORK(默认 1panel-network)。