You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
2 months ago | |
|---|---|---|
| .. | ||
| admin | 2 months ago | |
| app | 2 months ago | |
| console | 2 months ago | |
| .gitignore | 4 months ago | |
| README.md | 4 months ago | |
| registry-profiles.sh | 2 months ago | |
README.md
yunyan-sas 部署
每个服务目录各一个 deploy.sh,服务名取自所在目录,指令为 <env> [action]。
每个服务自带单服务 compose + 环境模板;依赖服务(PostgreSQL / Redis / NATS)
由目标环境共享提供,不在 compose 内搭建,只在 env 里填连接地址。
服务
console/— Go 控制面服务(:8080)admin/— Nuxt 管理前端(:3000,通过CONSOLE_BACKEND连 console)
目录结构
deploy/
└── <service>/ # console / admin
├── deploy.sh # 本服务部署脚本(服务名 = 目录名)
├── docker-compose.yml # 单服务 compose(变量驱动,无依赖服务)
├── env/
│ ├── local.env.example
│ ├── dev.env.example
│ ├── prod.env.example
│ └── (复制填写后的 local.env / dev.env / prod.env)
└── (console 额外: confs/console.yaml、log/)
两个服务的
deploy.sh内容相同,靠所在目录名区分服务。
用法
进入服务目录运行:
cd deploy/console
./deploy.sh local up # 本机起 console
./deploy.sh dev # 一键发布 console 到开发服务器(动作默认 deploy)
./deploy.sh prod # 一键发布 console 到生产服务器
./deploy.sh prod logs # 看生产 console 日志
cd deploy/admin
./deploy.sh local up # 本机起 admin
./deploy.sh prod # 发布 admin 到生产服务器
参数:
env:local|dev|prodaction:local:up(默认)| down | restart | logs | ps | pull | builddev/prod:deploy(默认,构建推送+同步+远程拉起)| up(仅远程拉起)| build | down | restart | logs | ps | pull
首次配置(dev / prod)
配置分两处:部署目标/仓库凭据写死在各服务的 deploy.sh,运行时配置放 env 文件。
- 部署目标 + 私有仓库(改各服务
deploy.sh顶部deploy_profile,console / admin):- 按
dev/prod段填DEPLOY_HOST(服务器 IP) 和REGISTRY_PASS(仓库密码) - 通用项已给默认:
REGISTRY/REGISTRY_USER/DEPLOY_PORT/DEPLOY_USER/DEPLOY_KEY DEPLOY_DIR自动 =/opt/yunyan/<服务名>,无需填- 注:两个
deploy.sh各填各的,不共享
- 按
- 运行时配置(每个服务、每个环境一份 env):
cp console/env/dev.env.example console/env/dev.env cp admin/env/dev.env.example admin/env/dev.env需要填:
- 依赖服务连接(console):
POSTGRES_DSN/REDIS_ADDR+REDIS_PASSWORD/NATS_URL - 网络与端口:
DOCKER_NETWORK/ADMIN_PORT/TAG
- 依赖服务连接(console):
- 目标机要求:装 docker + docker compose v2、能访问私有镜像仓库、SSH 公钥已授权、依赖服务在
DOCKER_NETWORK网络内可达。
部署顺序
依赖服务(DB/Redis/NATS)共享、由环境预先提供。两个应用服务按序:
- 先
console(admin 依赖它) - 再
admin(同一目标机、同一DOCKER_NETWORK,用容器名yunyan-console连 console)
注意
env/*.env(真实)含密钥/DSN,已.gitignore忽略;仓库只保留*.example。- ⚠️ 部署目标/仓库密码写死在各服务
deploy.sh,而它们会进 git——DEPLOY_HOST、REGISTRY_PASS等会随仓库提交(私有仓库内可接受;公开前务必清理两个deploy.sh)。 - prod 的
TAG用固定版本号便于回滚;FIELD_ENCRYPT_KEY/CONSOLE_TOKEN_KEY用强随机值,环境间不复用。 - 镜像构建复用仓库根目录
build.sh(deploy.sh在 deploy/build 动作时自动调用,目标=服务名);当前仓库尚无 build.sh,build/deploy 前需先补。