1

我正在使用GitHub來保留我的項目。使用PHP風暴我推我的腳本到GitHub回購。如何自動部署谷歌應用程序引擎使用容器註冊表靈活使用構建觸發器

我使用Google App引擎的靈活環境應用程序。每當我推到我的GitHub回購。 最新的腳本將自動部署到Google App Engine靈活環境PHP項目。因此,我在GCP容器註冊表中創建了構建觸發器。

以下是我與碼頭工人PHP樣本項目文件

網/ index.php文件

<?php 

Echo 'this is sample project'; 

?> 

的app.yaml

runtime: php 
env: flex 

runtime_config: 
document_root: web 

manual_scaling: 
instances: 1 

handlers: 

- url: .* 
script: index.php 

Composer.json

{ 
    "require": { 
     "php": "7.1.*" 
    } 
} 

Dockerfile

# Docker: Google App Engine 

FROM gcr.io/google-appengine/php 

使用谷歌雲平臺集裝箱註冊建造trigger.Created構建觸發。我得到了下面的日誌

生成記錄儀

starting build "4d51b494-5f7d-48e5-a2a2-6d7d6a9318a9" 

FETCHSOURCE 
Initialized empty Git repository in /workspace/.git/ 
From https://source.developers.google.com/p/project-id/r/github-test 
* branch 5f9ac268123a3cfef5876034f2933eb83b34cd6d -> FETCH_HEAD 
HEAD is now at 5f9ac26 v 1 
BUILD 
Already have image (with digest): gcr.io/cloud-builders/docker 
Sending build context to Docker daemon 87.04kB 

Step 1/1 : FROM gcr.io/google-appengine/php 
latest: Pulling from google-appengine/php 
Digest: sha256:578584d281828af48df03b85dcdcfd5792e8eb2916567497b56468b 
Status: Downloaded newer image for gcr.io/google-appengine/php:latest 
[91m# Executing 3 build triggers... 
[0mStep 1/1 : COPY . $APP_DIR 
Step 1/1 : RUN chown -R www-data.www-data $APP_DIR 
---> Running in c9d98191fa2b 
Step 1/1 : RUN /build-scripts/composer.sh 
---> Running in ec2b02e5f0d1 
[91m+ DEFAULT_PHP_VERSION=7.1 
+ '[' -f /app/composer.json ']' 
[0m[91m+ '[' -n '' ']' 
+ CMD='php /build-scripts/detect_php_version.php /app/composer.json' 
[0m[91m++ su www-data -c 'php /build-scripts/detect_php_version.php /app/composer.json' 
[0mPHP_VERSION: 7.1 
[91m+ PHP_VERSION=7.1 
+ echo 'PHP_VERSION: 7.1' 
+ '[' 7.1 == exact ']' 
+ '[' 7.1 '!=' 5.6 ']' 
+ '[' 7.1 '!=' 7.0 ']' 
+ '[' 7.1 '!=' 7.1 ']' 
+ '[' 7.1 == 5.6 ']' 
+ '[' 7.1 == 7.0 ']' 
+ COMPOSER_GITHUB_OAUTH_TOKEN= 
+ [[ -n '' ]] 
+ unset COMPOSER_GITHUB_OAUTH_TOKEN 
+ rm -rf /app/vendor 
[0m[91m+ php -d auto_prepend_file= /build-scripts/install_extensions.php /app/composer.json /opt/php/lib/conf.d/extensions.ini 7.1 
[0m[91m+ '[' -n '' ']' 
+ NOSCRIPT=--no-scripts 
+ cd /app 
+ su -m www-data -c 'php -d auto_prepend_file='\'''\'' /usr/local/bin/composer install --no-scripts --no-dev --prefer-dist --optimize-autoloader --no-interaction --no-ansi --no-progress' 
[0m[91mLoading composer repositories with package information 
[0m[91mUpdating dependencies 
[0m[91mNothing to install or update 
[0m[91mWriting lock file 
Generating optimized autoload files 
[0m ---> 1c5b266fe5ef 
Removing intermediate container 473f7595359f 
Removing intermediate container c9d98191fa2b 
Removing intermediate container ec2b02e5f0d1 
Successfully built 1c5b266fe5ef 
Successfully tagged gcr.io/project-id/github-test:5f9ac268123a3cfef5876034f2933eb83b34cd6d 
PUSH 
Pushing gcr.io/project-id/github-test:5f9ac268123a3cfef5876034f2933eb83b34cd6d 
The push refers to a repository [gcr.io/project-id/github-test] 
09e0b63e8b63: Preparing 
9ab9de3bae7c: Preparing 
7ca730235cb1: Preparing 
bca74f739283: Preparing 
83430675961e: Preparing 
c4b086b9d099: Preparing 
acf227e1b2a5: Preparing 
40de2f738e9e: Preparing 
0ef981ddb200: Preparing 
73acc0dfea4b: Preparing 
825db9ad6441: Preparing 
23088c61aa93: Preparing 
122586f0e47f: Preparing 
357a1f7d4b42: Preparing 
d7fe08acdf1d: Preparing 
cd1b43d6d268: Preparing 
23b7338cf1fe: Preparing 
9301d4a8f319: Preparing 
2126b271c428: Preparing 
c4b086b9d099: Waiting 
acf227e1b2a5: Waiting 
40de2f738e9e: Waiting 
0ef981ddb200: Waiting 
73acc0dfea4b: Waiting 
825db9ad6441: Waiting 
23088c61aa93: Waiting 
122586f0e47f: Waiting 
357a1f7d4b42: Waiting 
d7fe08acdf1d: Waiting 
cd1b43d6d268: Waiting 
23b7338cf1fe: Waiting 
9301d4a8f319: Waiting 
2126b271c428: Waiting 
83430675961e: Layer already exists 
bca74f739283: Layer already exists 
c4b086b9d099: Layer already exists 
40de2f738e9e: Layer already exists 
acf227e1b2a5: Layer already exists 
0ef981ddb200: Layer already exists 
73acc0dfea4b: Layer already exists 
825db9ad6441: Layer already exists 
122586f0e47f: Layer already exists 
23088c61aa93: Layer already exists 
357a1f7d4b42: Layer already exists 
d7fe08acdf1d: Layer already exists 
cd1b43d6d268: Layer already exists 
23b7338cf1fe: Layer already exists 
9301d4a8f319: Layer already exists 
2126b271c428: Layer already exists 
09e0b63e8b63: Pushed 
7ca730235cb1: Pushed 
9ab9de3bae7c: Pushed 
5f9ac268123a3cfef5876034f2933eb83b34cd6d: digest: sha256:c604792b8b384e1186b55d11a1d04e8e06051e3f3083c25bd13668dcf size: 4285 
DONE 

我要部署容器圖像GAE FE,所以,我改變了我的搬運工文件中像這樣

Dockerfile

# Docker: Google App Engine 
    FROM gcr.io/google-appengine/php 
    gcloud app deploy -image-url=gcr.io/project-id/github-test 

我收到了這個問題

starting build "43508598-4542-4e1c-a9e7-d29343878202" 

FETCHSOURCE 
Initialized empty Git repository in /workspace/.git/ 
From https://source.developers.google.com/p/project-id/r/github-test 
* branch ea7511b88ad5c59736037c37685ea699b5c0 -> FETCH_HEAD 
HEAD is now at ea7511b v 1 
BUILD 
Already have image (with digest): gcr.io/cloud-builders/docker 
Sending build context to Docker daemon 87.04kB 

Error response from daemon: Dockerfile parse error line 7: Unknown instruction: GCLOUD 
ERROR 
ERROR: build step "gcr.io/cloud-builders/[email protected]:59e98ecdfe9229f080085953611ffb708a0df5b7f37a253ec" failed: exit status 1 

我不知道在哪裏使用gcloud app deploy -image url。

幫助我如何gcloud應用程序使用Git集裝箱註冊表部署圖像的URL,並建立觸發

回答

2

嘗試cloudbuild.yaml文件,像這樣:

steps: 
# Build the Docker image. 
- name: gcr.io/cloud-builders/docker 
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/app', '.'] 
# Push it to GCR. 
- name: gcr.io/cloud-builders/docker 
    args: ['push', 'gcr.io/$PROJECT_ID/app'] 
# Deploy your Flex app from the image in GCR. 
- name: gcr.io/cloud-builders/gcloud 
    args: ['app', 'deploy', 'app.yaml', '--image-url=gcr.io/$PROJECT_ID/app'] 
# Note that this build pushes this image. 
images: ['gcr.io/$PROJECT_ID/app'] 

這個文件添加到資料庫和配置構建觸發器,在您推送到分支時執行該操作。

+1

謝謝,Jason Hall,我根據您的回覆嘗試了cloudbuild.yaml。但我得到這個錯誤「已經有圖像(與摘要):gcr.io/cloud-builders/gcloud 錯誤:(gcloud.app.deploy)權限錯誤獲取應用程序[apps/project-id]。請確保你是使用正確的項目ID並且您有權查看項目上的應用程序。「我啓用了該項目的計費功能,並且GAE ADMIN API也啓用了。我使用正確的項目ID。可以知道遺漏了什麼嗎? – Sattanathan

+1

噢,我忘了提及您需要將應用程序部署權限授予項目的構建器服務帳戶,名稱類似於[email protected]。com –

+2

@Sattanathan有關授予應用程序部署權限的文檔,請訪問https://cloud.google.com/container-builder/docs/how-to/service-account-permissions#granting_additional_access –

相關問題