1.2 KiB
1.2 KiB
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_environment在NEXUS_INSTALL_WIZARD_PENDING=0时用env | grep NEXUS_写卷,Compose 无NEXUS_DATABASE_URL。
涉及文件
server/api/install.py—_sync_env_to_persist_volume;init-db/ Redis 修补 / lock 后立即同步卷docker/entrypoint.sh— 无NEXUS_DATABASE_URL的卷不 restore;无NEXUS_DATABASE_URL环境变量时不生成.env;export_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