我正在使用Cloud Build在Cloud Run上部署我的应用。我想在我的cloudbuild.yaml中设置php artisan
命令以运行迁移、初始化passport库...但我在Laravel初始化步骤中遇到此错误:
Starting Step #3 - "Laravel Init"
Step #3 - "Laravel Init": Already have image (with digest): gcr.io/cloud-builders/gcloud
Step #3 - "Laravel Init": bash: php: command not found
Step #3 - "Laravel Init": bash: line 1: php: command not found
Step #3 - "Laravel Init": bash: line 2: php: command not found
Step #3 - "Laravel Init": bash: line 3: php: command not found
Step #3 - "Laravel Init": bash: line 4: php: command not found
Finished Step #3 - "Laravel Init"
ERROR
ERROR: build step 3 "gcr.io/cloud-builders/gcloud" failed: step exited with non-zero status: 127
这是我的云构建yaml
steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
args:
...
id: Build
# Push the container image to Artifacts Registry
- name: 'gcr.io/cloud-builders/docker'
...
id: Push
# Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
id: Deploy
entrypoint: gcloud
...
# Laravel Init
- name: 'gcr.io/cloud-builders/gcloud'
id: Laravel Init
entrypoint: "bash"
args:
- "-c"
- |
php artisan migrate --force
php artisan db:seed --force
php artisan db:seed --class=Database\\Seeders\\UsersTableSeeder --force
php artisan passport:install
images:
- 'europe-west3-docker.pkg.dev/$PROJECT_ID/.....'
tags:
- latest
我怎样才能执行我的php工匠命令?
2条答案
按热度按时间jm81lzqq1#
我找到了一个解决方案。我使用了helper exec-wrapper。有了这个helper,我可以使用我的laravel容器env,并通过嵌入式云SQL代理连接到云SQL。所以我只需要传递我最新的当前映像,之前在
cloudbuild.yaml
的第一步中构建。我设置了数据库套接字连接,然后传递migration.sh
文件,在那里我可以运行我所有的php artisan
命令。我使用的是mysql,所以你必须调整端口和连接名称,如果你正在使用另一个数据库。
cloudbuild.yaml:
关心
/app/scripts/migration.sh
中的/app
文件夹。/app
是我在Dockerfile
中设置的WORKDIR
migration.sh look like this:
不要忘记在IAM部分中将权限
Client Cloud SQL
添加到Cloud Build服务,否则Cloud Build无法连接到您的Cloud SQL示例。注意你的镜像是否有入口点文件,你必须使用
exec $@
来执行来自app engine exec wrapper的--
命令,如果你不使用它,这些命令将被忽略。现在使用Laravel 9,我们可以在迁移过程中使用--
isolated
参数php artisan migrate--isolated轻松锁定数据库。因此,我们可以删除
gcr.io/google-appengine/exec-wrapper
步骤,并将php artisan migrate --isolated
命令添加到laravel映像(Dockerfile)中。gcmastyq2#
根据这个输出
php: command not found
,看起来您的云环境中没有安装PHP