【问题标题】:Laravel migration for AppEngine in CloudBuildCloudBuild 中 AppEngine 的 Laravel 迁移
【发布时间】:2020-12-28 15:38:08
【问题描述】:

我们有一个在应用引擎中运行的 Laravel 项目。 我们通过 CloudBuild 部署一切,效果很好。 以前我们手动进行数据库迁移,但现在我想包含到 CloudBuild。

在 CloudBuild 中我找不到任何能够进行数据库迁移的 php 包。

当前 cloudbuild.yaml 如下:

steps:
#Install
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']

#Build
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'prod']

#Deploy Test
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy', 'app.yaml']

任何提示如何在部署代码库后进行php artisan migrate

【问题讨论】:

    标签: laravel google-app-engine google-cloud-platform deployment


    【解决方案1】:

    您可以尝试使用 Cloud SQL Proxy 和 Docker Compose 来实现迁移。

    首先,您需要为 Cloud Build 设置 docker-compose,然后创建一个服务帐户。

    您的 docker-compose 文件应如下所示:

    version: '3.7'
    
    services: 
      app:
        build:
          context: .
          dockerfile: Dockerfile
        restart: "no"
        links:
          - database
        tty: true
        volumes: 
          - app:/var/www/html
        env_file: 
          - ./.env
        depends_on: 
          - database
          
    
      database:
        image: gcr.io/cloudsql-docker/gce-proxy
        restart: on-failure
        command: 
          - "/cloud_sql_proxy" 
          - "-instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:3306" 
          - "-credential_file=/config/sql_proxy.json"
        volumes: 
          - ./sql_proxy.json:/config/sql_proxy.json:ro
    
    volumes: 
      app:

    您的 cloudbuild.yaml 文件应如下所示:

    - name: 'gcr.io/$PROJECT_ID/docker-compose'
      id: Compose-build-cloudProxy
      args: ['build']
    
    - name: 'gcr.io/$PROJECT_ID/docker-compose'
      id: Compose-up-cloudProxy
      args: ['up', '--timeout', '1', '--no-build', '-d']
    
    - name: 'bash'
      id: Warm-up-cloudProxy
      args: ['sleep', '5s']
    
    - name: 'gcr.io/cloud-builders/docker'
      id: Artisan-Migrate
      args: ['exec', '-i', 'workspace_app_1', 'php', 'artisan', 'migrate']
    
    - name: 'gcr.io/$PROJECT_ID/docker-compose'
      id: Compose-down-cloudProxy
      args: ['down', '-v']

    您还可以查看以下link,其中包含一些强大的 php 工具,可能有助于处理过程,例如php artisan migrate

    【讨论】:

    • 理论上可以,但在这种情况下,我必须使用 laravel 拉动 git repo 才能进行迁移,对吧?
    • 你的意思是php工具之一?不一定这更像是一种可行的替代方案,因为它有一些可以在此过程中提供帮助的工具。
    • $PROJECT_ID 已替换为当前 project_id 我在部署过程中收到以下错误:拉取图像:gcr.io/$PROJECT_ID/docker-compose 使用默认标签:最新来自守护进程的错误响应:gcr 的清单.io/$PROJECT_ID/docker-compose:latest not found: manifest unknown: 无法从请求“/v2/$PROJECT_ID/docker-compose/manifests/latest”中获取“latest”。
    • 这通常出现在您没有选择要提取的正确标签时。
    • 没有 docker-compose 包。这就是问题所在。
    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 2019-05-17
    • 2019-12-27
    • 2011-02-19
    • 2021-02-28
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多