GCPを使用する
cloud build
アプリケーションを任意のDockerコンテナ上でビルドすることができる。
https://cloud.google.com/build/docs/cloud-builders
下記のようなyamlファイルでdockerコンテナに対してコマンドを実行してビルドを行っていく。
code:yaml
steps:
- name: "コンテナイメージ"
- args: "実行するコマンド"
gcloud app deploy
App Engineに対してgcloud(GCPのcliアプリケーション)によってデプロイを行うこともできる。
https://cloud.google.com/sdk/gcloud/reference/app/deploy
App Engineコンフィグファイルのドキュメント
App Engineはnode.jsなどが使用できるウェブアプリケーション用のサービス?。静的ファイルの配信条件・httpヘッダーの設定などがyamlファイルで設定できる。
https://cloud.google.com/appengine/docs/standard/reference/app-yaml?tab=python#environment_variables
code:yml
- url: /(.*\.(gif|png|jpg|ico|txt|svg|js|css))$
static_files: dist/\1
upload: dist/.*\.(gif|png|jpg|ico|txt|svg|js|css)$
static_filesの\1は正規表現のグループキャプチャ? \1は変数のようなイメージ。ulrがdist/**/**.gifなどだった場合、dist/**/*.gifを返す、というようなことが書いてあるのではないか。
実際の手順
(GCPの無料フルバージョン?を有効化)
Cloud BuildのコンソールにてCloud Buildを有効化
AppEngineでアプリの作成を選択
アプリの作成画面にて設定すること
アプリの作成でリージョンを選択→とりあえずus-central (デフォルト値)
App Engineデフォルトサービスアカウントを選択 (デフォルト値)
作成ボタンを押す
「IAMと管理」画面から、Cloub Buildサービスアカウントに対してApp Engine管理者のロールを追加する
Cloud Buildの設定メニューからサービスアカウントとApp Engine管理者のステータスを「有効」へ変更する
-------ここまでの手順でIAMのパーミッションエラーが解消された。
cliでgcloud initを行う(アカウントの設定、使用プロジェクトの設定が入る)
「APIとサービス」にてApp Engine Admin APIを有効化
code:sh
gcloud builds submit --project=<project_id> --config ./cloudbuild/cloudbuild.stg.yaml
→ https://cloud.google.com/build/docs/deploying-builds/deploy-appengine?hl=ja
Cloud BuildからAppEngineへデプロイする方法のドキュメント
デプロイされたページ
https://annular-net-372108.uc.r.appspot.com/
メモ
理解できなかったエラー。
cloud buildからapp engineへデプロイするときdefaultがどうのこうのと言われる。プロジェクト名がdefaultでないといけない?
→https://qiita.com/ezaqiita/items/df24cdef6dee6d38509f
defaultが1つはないといけない、というルールは存在するようだ。なぜだかはわからない。
code:txt
Step #2: ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: The first service (module) you upload to a new application must be the 'default' service (module). Please upload a version of the 'default' service (module) before uploading a version for the 'quiz-test-stg' service (module). See the documentation for more information. Python: (https://developers.google.com/appengine/docs/python/modules/#Python_Uploading%%20modules) Java: (https://developers.google.com/appengine/docs/java/modules/#Java_Uploading%%20modules)