Files

49 lines
2.0 KiB
Markdown
Raw Permalink Normal View 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` |
## 迁移 / 重启
```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` 项目移除已删服务的孤儿容器