お試しで動かしてみた。下のリンクどおりにやれば大丈夫なはず。
https://cloud.google.com/ruby/rails/appengine
Cloud SDK をインストールする
https://cloud.google.com/sdk/?hl=jaからインストールする。
ログインをする
gcloud auth login
コマンドを叩くとブラウザが起動して使用するユーザーを選んで SDK に権限を与える
ちなみに警告で以下のように出る。
ADCってなんだ?と思ったけど application default credentials らしい。
デフォルト設定するとうっかりミスしそうなので無視した。
WARNING: `gcloud auth login` no longer writes application default credentials.
If you need to use ADC, see:
gcloud auth application-default --help
デフォルト値を変更する
GCPを既に使っているとデフォルトプロジェクトが勝手にセットされてしまうので外しておく
# 確認
gcloud config list
# 外す
gcloud config unset project
プロジェクトの作成
ブラウザ上から作ったほうが楽だと思う。コマンドで作りたい場合は下記URLを参照。
https://cloud.google.com/sdk/gcloud/reference/projects/create
デプロイを試す
Rails プロジェクト直下で以下のコマンドを叩く
# 初回のみ実行
gcloud app create --project PROJECT_NAME
# デプロイ
gcloud app deploy --project=PROJECT
昔の記事だと gcloud preview app deploy
というコマンドを見かけたが、現在はなくなっているっぽい
WARNING: Automatic app detection is currently in Beta
Deployment to Google App Engine requires an app.yaml file. This
command will run `gcloud beta app gen-config` to generate an app.yaml
file for you in the current directory (if the current directory does
not contain an App Engine service, please answer "no").
Do you want to continue (Y/n)?
警告が出た。 app.yaml ないと怒っているので n
を選択して、app.yaml を作成する。
gcloud beta app gen-config
勝手に言語を認識してくれた。すごい。
質問形式で聞いてくるけど、一旦デフォルトのまま作ってみる。
entrypoint: bundle exec rackup -p $PORT
env: flex
runtime: ruby
とてもシンプル。
https://cloud.google.com/appengine/docs/flexible/ruby/runtime
を見ながら挙動を確認してみる
- 内部で docker を使っている
- Ruby は rbenv 経由でインストールされ、バージョンは
.ruby-version
ファイルで指定する。
ファイルがないとデフォルトの 2.3.4 が使われるらしい (2018年7月時点) - Gemfile を探して
bundle install
してくれる。偉い。 - RAILS_ENV などはイメージで既に環境変数としてセットされているのでもし変えたい場合はカスタムイメージを使う必要があるっぽい
とりあえず rails プロジェクトなのでエントリーポイントを修正
entrypoint: bundle exec rails -p $PORT
env: flex
runtime: ruby
その他の環境変数を設定する
entrypoint: bundle exec rails -p $PORT
env: flex
runtime: ruby
env_variables:
SECRET_KEY_BASE: 'xxxxx'
gcloud app deploy --project=PROJECT
ここで環境変数設定するとなると、セキュアな情報も含んでしまうので .gitignore に入れておいたほうが良さそう。
他によい方法あるのかな?