ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Bitwarden server Aspire AppHost 启动时服务卡在等待状态怎么排查

Bitwarden server Aspire AppHost 启动时服务卡在等待状态怎么排查 Bitwarden server Aspire AppHost 启动时服务卡在等待状态怎么排查【免费下载链接】serverBitwarden infrastructure/backend (API, database, Docker, etc).项目地址: https://gitcode.com/GitHub_Trending/ser/server在 Bitwarden server 仓库的AppHost目录执行dotnet run后Aspire 会编排整套本地开发环境。按设计所有资源按依赖顺序启动各业务服务api、billing、identity等会等待数据库和 secrets 初始化完成后再启动。如果你发现 dashboard 里的服务资源长时间停留在 waiting 状态、迟迟不进入运行状态本文说明如何沿着等待链定位卡住的前置资源并按 AppHost/README.md 的 Troubleshooting 表逐项处理。适用环境是本地开发环境.NET Aspire 编排的AppHost前提条件见下文。启动前的前置条件AppHost/README.md 列出的 Prerequisites要求说明.NET SDK 10Aspire 要求Docker Desktop运行支撑基础设施容器SQL Server、Azurite、MailCatcher、Redis 等PowerShellpwsh迁移脚本和 secrets 脚本用它执行已完成的 server 初始化dev/secrets.json必须存在满足后按 Quick Start 启动cd AppHost dotnet runAspire dashboard 会自动在浏览器打开。资源按依赖顺序启动服务在数据库和 secrets 初始化完成前会一直等待——这是正常行为只有等待链上的前置资源异常时才需要排查。先理解等待链服务在等什么从 AppHost/AppHost.cs 和 AppHost/BuilderExtensions.cs 的编排逻辑看等待关系是每个 Bitwarden 服务都WaitFor(mssql)并WaitForCompletion(setup-secrets)即等数据库就绪、等setup-secrets这个可执行资源跑完见 BuilderExtensions.cs 的AddBitwardenServiceapi、events、eventsProcessor、notifications额外WaitFor(azurite)run-db-migrations本身WaitFor(mssql)并WaitForCompletion(setup-secrets)AppHost.cs。也就是说服务卡在 waiting根因几乎总在前置链上setup-secrets没跑完、mssql容器起不来、或者迁移脚本失败。README 的 Troubleshooting 表对这一现象给出的直接指引是检查 dashboard 中setup-secrets或run-db-migrations的日志。打开 Dashboard 查看资源状态和日志dashboard 运行后会自动打开也可以直接访问AppHost/README.mdProfileURLHTTPS默认https://localhost:17271HTTPhttp://localhost:15055dashboard 展示每个资源的实时状态、结构化日志、分布式 trace 和环境变量。重点看两个可执行资源setup-secrets和run-db-migrations的日志输出按下面的已知原因对号入座。已知原因与对应处理1.dev/secrets.json缺失secrets 未应用setup-secrets资源实际执行dev/setup_secrets.ps1带-clear参数见 BuilderExtensions.cs。该脚本在dev目录下找不到secrets.json时会输出警告并直接退出setup_secrets.ps1No secrets.json file found, please copy and modify the provided example处理参照 dev/secrets.json.example 复制出dev/secrets.json并填入本地值然后按 Troubleshooting 表的处理方式——从 Aspire dashboard 重新运行setup-secrets资源。注意副作用重新运行setup-secrets时脚本会先对列出的项目src/Api、src/Billing、src/Admin等 12 个项目执行dotnet user-secrets clear再把dev/secrets.json的内容重新应用到这些项目见 setup_secrets.ps1。如果你的本地 user secrets 有其他未写进secrets.json的值会被覆盖。2. SQL Server 容器起不来所有服务和run-db-migrations都等待mssql资源。Troubleshooting 表给出的检查项确认Docker Desktop 正在运行且端口 1433 空闲。mssql使用mssql/server:2022-latest镜像、映射宿主机 1433 端口AppHost/README.md、appsettings.Development.json。端口被占用时容器起不来整条等待链都会停滞。3. 迁移立即失败pwsh不在 PATH 上setup-secrets和run-db-migrations都是pwsh可执行资源run-db-migrations实际执行dev/migrate.ps1对vault_dev建库并跑全部迁移见 migrate.ps1。Troubleshooting 表迁移立即失败时确保pwshPowerShell在$PATH上。4. 启动时端口冲突各服务的BasePort预填在 AppHost/appsettings.Development.json例如api为4000与每个服务自身Properties/launchSettings.json的端口一致。如果本机其他进程占了该端口按 Troubleshooting 表用 user secrets 覆盖为空闲端口例如dotnet user-secrets set Services:api:BasePort 4001name换成冲突的服务名api、billing、identity等端口换成你机器上空闲的值。验证结果与边界说明修复后回到 dashboard 观察setup-secrets、mssql、run-db-migrations等前置资源完成运行等待中的服务按依赖顺序陆续启动——README 的说明是“services wait for the database and secrets setup to finish before launching”即前置资源完成后服务开始运行即为预期结果。每个资源的运行证据状态、日志、环境变量都可以直接在 dashboard 里查看无需另开终端。一个容易误判的情况idp、web-frontend、billing-webhook-ngrok-endpoint是explicit start资源README 明确说明它们需要从 dashboard 手动启动。这些资源一直显示未启动属于设计行为不属于“卡在等待”。如果某个前置资源日志里仍报错以该资源在 dashboard 中的结构化日志为准继续定位上表覆盖的是 README Troubleshooting 表列出的已知原因。【免费下载链接】serverBitwarden infrastructure/backend (API, database, Docker, etc).项目地址: https://gitcode.com/GitHub_Trending/ser/server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表