# 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` | ## 迁移 / 重启 ```bash 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 ps` 无 `nexus-prod-mysql-*`;`nexus-1panel.sh upgrade` 自动 `--remove-orphans` ## 2026-06-04 补充 - `install` / `upgrade` 前自动执行 `uninstall-mysql-compose.sh` - `compose up` 增加 `--remove-orphans`,从 `nexus-prod` 项目移除已删服务的孤儿容器