Files
Nexus/docs/changelog/2026-06-04-external-mysql-compose.md
T
Nexus Deploy 1bd69077a2 fix(deploy): auto-remove legacy Compose MySQL containers on upgrade
Run uninstall-mysql-compose before install/upgrade and pass --remove-orphans so nexus-prod mysql orphans are stopped after the service is dropped from compose.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 03:32:00 +08:00

2.0 KiB
Raw Blame History

2026-06-04 — 生产 Compose 移除外置 MySQL

摘要

生产 Docker 栈从「MySQL + Nexus」改为仅 Nexus 容器MySQL 与 Redis 均由用户在宿主机或 1Panel 自行安装,安装向导步骤 3 填写连接信息。

动机

  • 用户希望数据库自行创建与管理,不随安装脚本附带 MySQL 容器与自动密码。
  • 与已移除外置 Redis Compose 服务的设计一致,降低 bind mount / 卷冲突风险。

涉及文件

文件 变更
docker/docker-compose.prod.yml 移除 mysql 服务与数据卷
docker/.env.prod.example 移除 MYSQL_*
docker/profiles/*.env 移除 MYSQL_CNF_FILE
docker/entrypoint.sh MySQL 等待改为 host.docker.internal(可选)
scripts/generate_nexus_secrets.py 新机仅生成 NEXUS_*
deploy/nexus-1panel.sh 备份改读外置 NEXUS_DATABASE_URL
deploy/uninstall-mysql-compose.sh 卸载遗留 Compose MySQL 容器
deploy/README-1panel.md / docker/README.md 文档更新
web/app/install.html MySQL 自建说明
server/api/install.py Docker 默认 db_host=host.docker.internal

迁移 / 重启

cd /opt/nexus && git pull
bash deploy/uninstall-mysql-compose.sh          # 可选:删旧 Compose MySQL
bash deploy/nexus-1panel.sh upgrade
bash deploy/sync-install-wizard-to-container.sh

自建 MySQL 后完成 /app/install.html 步骤 3(主机 host.docker.internal)。

验证

  • docker compose -f docker/docker-compose.prod.yml config 仅含 nexus 服务
  • python3 scripts/generate_nexus_secrets.py write-prod --fresh 输出无 MYSQL_*
  • 安装向导步骤 3 可连接外置 MySQL 并完成 init-db
  • docker psnexus-prod-mysql-*nexus-1panel.sh upgrade 自动 --remove-orphans

2026-06-04 补充

  • install / upgrade 前自动执行 uninstall-mysql-compose.sh
  • compose up 增加 --remove-orphans,从 nexus-prod 项目移除已删服务的孤儿容器