Files
Nexus/docs/changelog/2026-06-06-docker-env-persist-wizard-sync.md
2026-07-08 22:31:31 +08:00

1.2 KiB
Raw Permalink Blame History

2026-06-06 — Docker .env 持久化与 entrypoint 覆盖修复

摘要

修复 1Panel 安装向导完成后 nx update/容器重启导致 nexus-state 卷内 .env 缺少 NEXUS_DATABASE_URL、应用连 127.0.0.1 崩溃的问题。

动机

  • init-db 仅写 /app/.env,卷同步依赖容器 EXIT trap,重建容器时 restore_persisted_env 可能恢复 entrypoint 生成的简版 env。
  • write_env_from_environmentNEXUS_INSTALL_WIZARD_PENDING=0 时用 env | grep NEXUS_ 写卷,Compose 无 NEXUS_DATABASE_URL

涉及文件

  • server/api/install.py_sync_env_to_persist_volumeinit-db / Redis 修补 / lock 后立即同步卷
  • docker/entrypoint.sh — 无 NEXUS_DATABASE_URL 的卷不 restore;无 NEXUS_DATABASE_URL 环境变量时不生成 .envexport_app_env 在启动前 source /app/.env,使向导写入的 DATABASE_URL / REDIS_URL 覆盖 Compose 占位符

迁移 / 重启

已损坏的卷内 .env 需手工补全 NEXUS_DATABASE_URL 与 Redis URL 后 docker start;新装/重装向导自动同步。

验证

.venv/bin/pytest tests/test_security_unit.py -q
# 向导 init-db 后:
docker exec nexus-prod-nexus-1 grep NEXUS_DATABASE_URL /var/lib/nexus/.env