49 lines
2.0 KiB
Markdown
49 lines
2.0 KiB
Markdown
# 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` 项目移除已删服务的孤儿容器
|