dd66d99f2d
purge 阶段 compose 叠加 1panel overlay;菜单启动/重建与回滚后校验网络;install-auto 已安装改走 update。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
安装锁持久化 + 1panel-network 升级校验
| 项 | 内容 |
|---|---|
| 日期 | 2026-06-06 |
| 动机 | 生产 nx update 重建容器后丢失 .install_locked;容器未接入 1panel-network 导致 MySQL/Redis DNS 失败与 502 |
变更摘要
- 安装锁写入 nexus-state 卷:
install.py锁定后同步至/var/lib/nexus/.install_locked;entrypoint.sh启动时恢复至/app/.install_locked,退出时双写。 - 升级后 1panel-network 校验:
deploy/nexus-1panel.sh新增verify_nexus_1panel_network,compose up后自动检测;未接入则叠加docker-compose.1panel.yml重建,失败则回滚。 - entrypoint 日志:MySQL/Redis 等待日志区分服务名(不再误标为 Redis)。
- 部署脚本:
set_install_complete/sync_env_prod_to_volume识别卷内锁文件并恢复至/app。
涉及文件
server/api/install.pydocker/entrypoint.shdeploy/nexus-1panel.shtests/test_security_unit.py
迁移 / 重启
- 需重建 Nexus 镜像(entrypoint 变更)并
compose up。 - 无 DB 迁移。
后续修补(nx 上帝菜单巡检)
uninstall-mysql-compose.sh:compose up叠加docker-compose.1panel.yml,避免升级 purge 阶段摘掉1panel-network。deploy/nx:ops_start_stack/ 菜单[8]重建后调用verify_nexus_1panel_network;install-auto已安装时改走update.sh。cmd_upgrade:同步 install.html 前等待/health,减少误触发sync-install-wizard重启。
验证
bash -n deploy/nx && bash -n deploy/nexus-1panel.sh && bash -n deploy/uninstall-mysql-compose.sh
pytest tests/test_security_unit.py -k "sync_lock or install_reject" -q
# 升级后容器应同时在 1panel-network 与 nexus-internal
docker inspect nexus-prod-nexus-1 --format '{{range $k,$v := .NetworkSettings.Networks}}{{$k}} {{end}}'
# 锁定后卷内应有锁文件
docker exec nexus-prod-nexus-1 test -f /var/lib/nexus/.install_locked