如何将 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] 没有错误=]终端机。
如果有人知道任何有用的文章或自己遇到过这个问题,我将不胜感激。
附加信息:
- Laravel 框架 8.69.0
- Vue 版本 3.0.5
- Docker 引擎社区 20.10.8
- SQL 服务器 'europe-west2'
无论如何我都不知道 运行 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 必须存在,因此您必须导入本地数据库才能开始。
我的 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] 没有错误=]终端机。
如果有人知道任何有用的文章或自己遇到过这个问题,我将不胜感激。
附加信息:
- Laravel 框架 8.69.0
- Vue 版本 3.0.5
- Docker 引擎社区 20.10.8
- SQL 服务器 'europe-west2'
无论如何我都不知道 运行 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 必须存在,因此您必须导入本地数据库才能开始。