从 Docker Compose 导入
将 Docker Compose 中数据库和缓存的数据复制到 Joppa 的服务中,然后切换项目,始终不修改源数据。
你的项目在它自己的 docker-compose.yml 中运行 PostgreSQL 或 Redis?Joppa 可以把它们的数据复制到自己的服务中,然后让项目指向这些服务。源数据永远不会被修改。
在哪里找到
- 添加项目时:窗口会为找到的每个数据库或缓存提供 导入 Joppa。数据会在添加项目后复制。
- 之后:在项目的 域名 标签页中,Docker Compose 数据 部分。
可以导入什么
| 源(Compose) | 目标(Joppa) | 方式 |
|---|---|---|
| PostgreSQL | PostgreSQL | pg_dump 后恢复 |
| MySQL、MariaDB | MySQL 或 MariaDB | mysqldump 后恢复 |
| Redis、Valkey | Redis 或 Valkey | 复制键(DUMP / RESTORE) |
Joppa 会读取 compose.yaml、compose.yml、docker-compose.yml 或 .yaml、override 文件以及 COMPOSE_FILE,并用 .env 和 env_file 中的值替换 ${VAR:-default}。它能找出镜像的版本,即使镜像是从 Dockerfile(FROM)构建的。
导入计划
在复制任何内容之前,Joppa 会显示源、目标,以及:
- 要导入的数据库 和 Joppa 中的名称;
- 大小(或键的数量);
- 两边的 版本;
- 源数据库使用的 扩展:Joppa 中可用、需在 Joppa 服务器上启用 或 Joppa 未提供。
对于缓存,选项 替换 Joppa 中已有的键 用于在合并与覆盖之间选择。
Joppa 替你处理的事
| 情况 | 提议 |
|---|---|
| 源已停止 | 经你同意后启动它(docker compose up) |
| Joppa 中还没有该服务 | 创建 PostgreSQL 17,版本与源相同 |
| Joppa 中的服务已停止 | 启动它 |
| 源的端口未发布(缓存) | 需要添加到 Compose 中的代码片段 |
| 需在服务器上启用扩展 | 将它们加入镜像并重启服务 |
| 已存在同名数据库 | 以其他名称导入 或 替换 |
导入按可见的步骤进行:导出、创建数据库、恢复(或 读取键、复制键)。
将项目切换到 Joppa
数据复制完成后,将项目切换到 Joppa 提供以下可选操作:
- 停止 Compose 服务并释放端口:其数据仍保留在 Docker 中;
- 将项目的 .env 指向 Joppa:原文件保存在
.env.joppa-backup。
稍后 会让 Compose 和 .env 保持原样。