优化部署脚本非交互变量支持
This commit is contained in:
+22
-9
@@ -7,6 +7,7 @@
|
||||
- **仅 IP 访问**:不含域名模式与 HTTPS
|
||||
- **本地访问无需放行端口**:选择本地 (127.0.0.1) 时,不涉及防火墙配置
|
||||
- **Docker 未安装时**:用户可选择手动或自动安装 **Docker Desktop for Windows**(winget/Chocolatey)
|
||||
- **支持变量非交互部署**:通过 `DEPLOY_IP` 或 `DEPLOY_ACCESS=local` 可跳过访问方式选择
|
||||
|
||||
## 2. Linux start.sh 流程梳理
|
||||
|
||||
@@ -103,9 +104,13 @@ Windows 版**仅支持 IP 访问**,不包含域名模式与 HTTPS 配置。用
|
||||
|
||||
| 变量 | 说明 |
|
||||
|------|------|
|
||||
| `DEPLOY_ACCESS` | `local` 时直接使用 `127.0.0.1`;`lan`/`ip` 需要同时传 `DEPLOY_IP` |
|
||||
| `DEPLOY_IP` | 访问 IP(本地填 `127.0.0.1`,局域网填实际 IP) |
|
||||
| `DEPLOY_DRY_RUN` | 1 时只生成配置,不安装/启动 Docker |
|
||||
| `DEPLOY_FORCE_RECONFIG` | 非空时强制重新配置 |
|
||||
| `DEPLOY_NON_INTERACTIVE` | 1 时缺少必要变量会直接报错,不进入问答 |
|
||||
| `DEPLOY_DOCKER_INSTALL` | Docker Desktop 未安装时使用,`manual` 打开下载地址,`auto` 使用 winget/choco 自动安装 |
|
||||
| `DEPLOY_NO_WAIT` | 1 时脚本结束或失败不等待按 Enter |
|
||||
|
||||
### 5.4 配置文件修改实现(仅 IP 模式)
|
||||
|
||||
@@ -126,6 +131,7 @@ Set-Content .env -Value $content -Encoding UTF8 -NoNewline
|
||||
- **未安装时**: prompt 让用户选择
|
||||
- `[1] 手动安装`:输出安装说明及 Docker Desktop for Windows 下载链接,退出脚本
|
||||
- `[2] 自动安装`:通过 winget 或 Chocolatey 安装 Docker Desktop for Windows,安装后需用户重启终端/机器再继续
|
||||
- 若设置 `DEPLOY_DOCKER_INSTALL=manual|auto`,脚本会直接执行对应分支,不再提示选择
|
||||
|
||||
### 5.6 执行策略
|
||||
|
||||
@@ -154,15 +160,16 @@ powershell -ExecutionPolicy Bypass -File .\start.ps1
|
||||
|
||||
## 7. 实现清单
|
||||
|
||||
- [ ] 创建 `start.ps1` 主脚本
|
||||
- [ ] 实现 `Init-ProjectDir`:项目目录校验
|
||||
- [ ] 实现 `Run-DeployQuestions`:本地 / 局域网 IP 选择(无域名/HTTPS)
|
||||
- [ ] 实现 `Setup-EnvFiles`:配置文件生成与替换
|
||||
- [ ] 实现 `Test-Docker`:Docker 检测,未安装时 prompt「手动安装」或「自动安装」
|
||||
- [ ] 实现 `Install-Docker`:自动安装 **Docker Desktop for Windows**(winget / Chocolatey)
|
||||
- [ ] 实现 `Start-Services`:`docker compose` 启动
|
||||
- [ ] 实现 `Main`:主流程串联
|
||||
- [ ] 支持 `DEPLOY_DRY_RUN`、`DEPLOY_IP` 环境变量非交互模式
|
||||
- [x] 创建 `start.ps1` 主脚本
|
||||
- [x] 实现 `Init-ProjectDir`:项目目录校验
|
||||
- [x] 实现 `Run-DeployQuestions`:本地 / 局域网 IP 选择(无域名/HTTPS)
|
||||
- [x] 实现 `Setup-EnvFiles`:配置文件生成与替换
|
||||
- [x] 实现 `Test-Docker`:Docker 检测,未安装时 prompt「手动安装」或「自动安装」
|
||||
- [x] 实现 `Install-Docker`:自动安装 **Docker Desktop for Windows**(winget / Chocolatey)
|
||||
- [x] 实现 `Start-Services`:`docker compose` 启动
|
||||
- [x] 实现 `Main`:主流程串联
|
||||
- [x] 支持 `DEPLOY_DRY_RUN`、`DEPLOY_IP` 环境变量非交互模式
|
||||
- [x] 支持 `DEPLOY_ACCESS=local`、`DEPLOY_NON_INTERACTIVE`、`DEPLOY_DOCKER_INSTALL` 非交互控制
|
||||
- [x] 在 README 或文档中补充 Windows 部署说明与执行策略
|
||||
- [x] 创建 `scripts/test-start-ps1-env.py` 验证 .env 替换逻辑
|
||||
|
||||
@@ -178,6 +185,12 @@ $env:DEPLOY_DRY_RUN = "1"
|
||||
$env:DEPLOY_IP = "127.0.0.1"
|
||||
.\start.ps1
|
||||
|
||||
# 或使用本机访问模式变量
|
||||
$env:DEPLOY_DRY_RUN = "1"
|
||||
$env:DEPLOY_ACCESS = "local"
|
||||
$env:DEPLOY_NO_WAIT = "1"
|
||||
.\start.ps1
|
||||
|
||||
# 检查 .env 是否已正确写入
|
||||
Select-String -Path .env -Pattern "NUXT_PUBLIC_BASE"
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user