如何将 Docker 上的 Laravel 数据库迁移到 Google 云上

How to migrate Laravel database on Docker onto Google Cloud

我的 Laravel 应用程序 运行 在 docker 上使用 Windows 机器上的 Linux 命令。这意味着我没有使用“php artisan”命令,而是使用“sail artisan”命令。我能够在本地迁移到 docker (sail artisan migrate) 上的 SQL 服务器,并且能够将应用程序部署到 Google 云 (gcloud app deploy) 上。我拼图的最后一点是将数据库迁移到 Google 云 SQL 服务器上。 当我第一次设置应用程序时,我遇到了问题,所以我导出了 SQL 服务器,将其上传到 Google 云,然后手动部署它,这对于一次性来说很好,但我现在我想在不丢失所有数据的情况下更改数据库结构。我也觉得是时候学会正确地做这件事了。

我已尝试使用 Google's community tutorial 上的说明,但是,本指南假定该项目尚不存在,而我正在使用预先存在的应用程序和预先存在的数据库。我试图中途跳转到教程,但我无法让 Cloud SQL 代理工作。 经过更多的研究,我发现 this article 我中途完成了,但是,一旦我到达需要 TCP 或 Unix 套接字的部分,两组命令都不会 运行 我的 [=56] 没有错误=]终端机。

如果有人知道任何有用的文章或自己遇到过这个问题,我将不胜感激。

附加信息:

无论如何我都不知道 运行 sail/artisan GCP 上的命令行命令。

然而在./vendor/facade/ignition/src/Solutions/RunMigrationsSolution.php中有如下函数

public function run(array $parameters = [])
{
    Artisan::call('migrate');
}

可用于以编程方式运行 迁移。

所以在 ./routes/web.php 中创建一条类似

的路线
Route::get('/run_migrate', 
    [DataController::class, 'runMigrate']
)->middleware(['auth', 'verified'])->name('run_migrate');

并在./app/Http/Controllers/DataController.php中添加函数

public function runMigrate() {
    Artisan::call('migrate');
}

现在以授权用户身份登录后(或者如果您删除了 auth 中间件,则不需要登录)您可以转到 https://your-app-url.com/run_migrate 它将 运行 任何未完成的迁移.

要做到这一点,架构 table 必须存在,因此您必须导入本地数据库才能开始。