Files
Nexus/docs/changelog/2026-06-06-install-lock-persist-1panel-network-guard.md
T
Nexus Deploy dd66d99f2d fix(deploy): nx 上帝菜单巡检修补 1panel-network 与升级竞态
purge 阶段 compose 叠加 1panel overlay;菜单启动/重建与回滚后校验网络;install-auto 已安装改走 update。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 21:27:01 +08:00

2.0 KiB
Raw Blame History

安装锁持久化 + 1panel-network 升级校验

内容
日期 2026-06-06
动机 生产 nx update 重建容器后丢失 .install_locked;容器未接入 1panel-network 导致 MySQL/Redis DNS 失败与 502

变更摘要

  1. 安装锁写入 nexus-state 卷install.py 锁定后同步至 /var/lib/nexus/.install_lockedentrypoint.sh 启动时恢复至 /app/.install_locked,退出时双写。
  2. 升级后 1panel-network 校验deploy/nexus-1panel.sh 新增 verify_nexus_1panel_networkcompose up 后自动检测;未接入则叠加 docker-compose.1panel.yml 重建,失败则回滚。
  3. entrypoint 日志MySQL/Redis 等待日志区分服务名(不再误标为 Redis)。
  4. 部署脚本set_install_complete / sync_env_prod_to_volume 识别卷内锁文件并恢复至 /app

涉及文件

  • server/api/install.py
  • docker/entrypoint.sh
  • deploy/nexus-1panel.sh
  • tests/test_security_unit.py

迁移 / 重启

  • 需重建 Nexus 镜像(entrypoint 变更)并 compose up
  • 无 DB 迁移。

后续修补(nx 上帝菜单巡检)

  • uninstall-mysql-compose.shcompose up 叠加 docker-compose.1panel.yml,避免升级 purge 阶段摘掉 1panel-network
  • deploy/nxops_start_stack / 菜单 [8] 重建后调用 verify_nexus_1panel_networkinstall-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