从 Lerd、Herd、DDEV 或 Sail 迁移
一次性接管 Lerd、Laravel Herd、DDEV 或 Laravel Sail 的站点:项目和域名、复制到 Joppa 的数据库,以及附带 diff 和备份重写的 .env。
你已经在用 Lerd、Laravel Herd、DDEV 或 Laravel Sail?迁移到 Joppa 会一次性接管你的站点:每个站点都会成为一个 Joppa 项目,拥有 HTTPS 的 .test 域名;它的数据库会被复制到 Joppa 的服务中;它的 .env 会指向 Joppa。旧工具只会被读取:它的文件和数据库永远不会被修改,只有在你要求时才会停止它。
可以从以下位置打开:
- 首次启动时的欢迎界面:从 Lerd、Herd、DDEV 或 Sail 迁移…;
- 设置 › 迁移到 Joppa;
- ⌘ K 命令面板:「从 Lerd、Herd、DDEV 或 Sail 迁移…」;
- 代理横幅,当 Lerd、Herd、DDEV 或 Sail 占用 443 端口时:将其站点迁移到 Joppa…(参见 80 和 443 端口被占用)。
1. 找到的站点
Joppa 会在每个工具存放站点的位置查找:

| 工具 | Joppa 查找的位置 | 数据库 |
|---|---|---|
| Lerd | lerd sites、它的站点文件,以及每个项目中的 .lerd.yaml |
它的 Podman 容器(lerd-mysql、lerd-postgres),使用项目 .env 中的凭据 |
| Laravel Herd | 它的配置:停放的文件夹(每个子文件夹是一个站点)和链接(herd link) |
你机器上 Herd Pro 的服务(.env 中的 DB_HOST 和 DB_PORT) |
| DDEV | ~/.ddev/project_list.yaml 和 .ddev/config.yaml |
容器 ddev-<project>-db |
| Laravel Sail | 正在运行的 laravel.test 容器,以及包含 laravel.test 服务的 docker-compose.yml |
Compose 文件中的 MySQL、MariaDB 或 PostgreSQL 服务 |
Joppa 还会查看你常用的代码文件夹(~/Code、~/Sites、~/Projects、~/Herd…),向下一层。项目在别处?用 添加文件夹… 读取它。
每个站点会显示它的域名、文件夹、数据库和 PHP 版本。尚未在 Joppa 中的站点会被勾选;已经在其中的会标记为「已在 Joppa 中」。勾选要迁移的站点,然后点击 准备方案。
2. 方案
对每个站点,在任何改动发生之前:
- 域名:如果工具的域名已经是
.test(Lerd、Herd),就沿用它,否则使用<name>.test(blog.ddev.site变为blog.test)。如果它在 Joppa 中已被占用,则使用blog-2.test。它会被路由到127.0.0.1:8000,即php artisan serve的端口;对于非 Laravel 项目,则路由到 Joppa 检测到的开发服务器。 - 每个数据库:它的引擎和版本、大小、从哪里读取,以及接收它的 Joppa 服务(「→ Joppa 中的 MySQL 8.4 · shop」)。如果没有兼容的服务,Joppa 会创建一个:如果 Joppa 提供源数据库的版本就使用该版本,并选用一个空闲端口(「→ 新的 PostgreSQL 17 服务(端口 5433)」)。已经存在同名数据库?则使用第一个可用的名称(
shop_import)。 .env:会改动内容的 diff(DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD,以及改为https://的APP_URL),通过 查看更改 查看。
每个站点有三个复选框:

| 复选框 | 作用 |
|---|---|
| 复制数据库 | 把每个数据库复制到对应的 Joppa 服务,方式与 从 Docker Compose 导入 相同:用源数据库的客户端导出,创建数据库,恢复,然后比较表的数量 |
| 将 .env 指向 Joppa | 写入 diff 中显示的 .env。原文件保存为 .env.joppa-backup |
| 然后停止 … | 站点迁移完成后停止旧工具:lerd stop、herd stop、ddev stop <project>、./vendor/bin/sail stop |
3. 迁移
迁移 N 个站点 会逐个站点依次执行各个步骤,并显示进度:项目、数据库、.env、停止。某一步失败不会中断其他步骤;最后的报告会针对每个站点说明完成了什么或失败的原因,并提供 打开 以跳转到该项目。对已迁移的站点再次运行迁移,会沿用它现有的项目。
如果旧工具已被停止,而 Joppa 的代理之前没有运行(该工具占用着 443 端口),Joppa 会在最后启动它的代理。
不会改动的内容
- 项目的文件,除了
.env(如果你勾选了它,并且会先备份)。 - 旧工具的数据库:它们只会被读取。
- 旧工具的配置(它的站点、链接、DNS)。如果你保留 Lerd、Herd 或 Valet,它们的
.test解析会继续为 Joppa 服务;如果你卸载了它们,Joppa 会提议写入自己的解析文件(参见 解析 .test 域名)。