# 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` 复制填写): ```bash 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/ # 日志目录 ``` ### 部署 ```bash 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`。 - **依赖端点**:填服务器 `.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` 填外部地址)。