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.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| console/confs | 4 months ago | |
| env | 4 months ago | |
| targets | 4 months ago | |
| .gitignore | 4 months ago | |
| README.md | 4 months ago | |
| deploy.sh | 4 months ago | |
| docker-compose.yml | 4 months ago | |
README.md
yunyan-sas 部署
三环境部署:local(本机)/ dev(开发服务器)/ prod(生产服务器),统一入口 deploy.sh。
服务:yunyan-console(Go 控制面,:8080)+ yunyan-admin(Nuxt 管理前端,:3000)。
目录结构
deploy/
├── deploy.sh # 部署入口
├── docker-compose.yml # 变量驱动 compose(console + admin)
├── env/
│ ├── local.env # 本机运行时变量
│ ├── dev.env / prod.env # 各环境运行时变量(占位,需填)
│ └── example.env # 模板
├── targets/
│ ├── dev.conf / prod.conf # 远程目标 SSH/目录/仓库(占位,需填)
│ └── example.conf # 模板
└── console/confs/console.yaml # console 配置(变量从 .env 注入)
首次配置(dev / prod)
- 填
env/dev.env、env/prod.env:POSTGRES_DSN/REDIS_*/NATS_URL/DOCKER_NETWORK/ADMIN_PORT/CONSOLE_*/FIELD_ENCRYPT_KEY。- DSN 密码里的特殊字符要 URL 编码(
&→%26)。
- DSN 密码里的特殊字符要 URL 编码(
- 填
targets/dev.conf、targets/prod.conf:SSH_HOST/SSH_PORT/SSH_USER/SSH_KEY/REMOTE_DIR/REGISTRY_PASS。 - 目标服务器需:装 docker + docker compose v2、能访问私有镜像仓库、SSH 公钥已授权。
用法
# 本机
./deploy.sh local up # 起服务(访问 http://localhost:3000)
./deploy.sh local down
./deploy.sh local logs
# 开发服务器(一键:构建推送镜像 + 同步配置 + 远程拉起)
./deploy.sh dev deploy
./deploy.sh dev ps
./deploy.sh dev logs
# 生产服务器
./deploy.sh prod deploy
./deploy.sh prod restart
操作矩阵
| 操作 | local | dev / prod |
|---|---|---|
| up | 本机 compose up -d | 同步配置 + 远程 pull + up |
| down / restart / logs / ps | 本机 | 远程 |
| pull | 本机拉镜像 | 远程拉镜像 |
| build | 本机构建推送镜像(TAG 取自 env) | 同(构建始终在本机) |
| deploy | build + up | build + 同步 + 远程 pull + up |
deploy 流程(dev / prod)
- 本机
build.sh构建 console + admin 镜像并推送私有仓库(TAG 取自对应 env)。 - SSH 到目标机,创建
REMOTE_DIR。 - scp 同步:
docker-compose.yml+env/<环境>.env(→ 远程.env) +console/confs/console.yaml。 - 远程:确保
DOCKER_NETWORK网络存在(不存在则自动创建)+docker login私有仓库。 - 远程:
docker compose pull && docker compose up -d。
注意
env/*.env、targets/*.conf含密钥,已.gitignore忽略,不要提交。- prod 的
TAG建议固定版本号(如v1.2.0)便于回滚;prod 的FIELD_ENCRYPT_KEY/CONSOLE_TOKEN_KEY务必改强随机值。 - redis / nats:在目标机
DOCKER_NETWORK网络内则用容器名(redis:6379);否则在 env 填外部IP:端口。 - console 首启会在主库自动建表(含 serviceconfig / calltranslate 等新表)。