Closed11
[rails]GKEからGAE SEへの移行作業
従来RailsをGKEで運用していたが、運用コストが少ないGAE SEへ移行する。
構築環境
ruby: 2.7.0 (2.7.3を使用していましたがGAEでエラーが出たためバージョンダウンさせました)
rails 6 (API モード)
cloudsql (mysql)
GAE (SE)
参考
下記のようなエラーが発生
$gcloud app logs tail -s dev-goodhub-server
bundler: failed to load command: rackup (/workspace/.bundle/gems/ruby/2.7.0/bin/rackup)
上記サイトに乗っ取りエントリーポイントを変更することによって対応
entrypoint: bundle exec rails server Puma -p $PORT
再デプロイしてログを確認したところ下記のエラーが発生
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/thor-1.1.0/lib/thor/base.rb:525:in `handle_argument_error': ERROR: "rails server" was called with arguments ["Puma", "--p", "8081"] (Thor::InvocationError)
Usage: "rails server -u [thin/puma/webrick] [options]"
エラーに乗っ取り -u オプションを付けることによって対応
entrypoint: bundle exec rails server -u Puma -p $PORT
docker-compose build を行おうとしたところ下記のエラーが発生
An error occurred while installing grpc (1.41.0), and Bundler cannot continue.
In Gemfile:
appengine was resolved to 0.6.0, which depends on
stackdriver was resolved to 0.21.1, which depends on
google-cloud-error_reporting was resolved to 0.42.1, which depends on
google-cloud-error_reporting-v1beta1 was resolved to 0.4.2, which
depends on
gapic-common was resolved to 0.6.0, which depends on
googleapis-common-protos was resolved to 1.3.12, which depends on
grpc
下記サイトを参考にbundle updateを試みる
さらにGemfileにgrpcを追加
gem 'grpc'
下記エラーが発生
/layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require': cannot load such file -- listen (LoadError)
下記で対応
参考
下記エラーが発生
$ bundler: failed to load command: rails (/workspace/.bundle/gems/ruby/2.7.0/bin/rails)
$ Bundler::GemNotFound: Could not find ffi-1.15.0 in any of the sources
参考
ffi
下記エラーが発生
Process terminated because the request deadline was exceeded. Please ensure that your HTTP server is listening for requests on 0.0.0.0 and on the port defined by the PORT environment variable. (Error code 123)
entrypointを下記のように変更する
// before
entrypoint: bundle exec rails server -u Puma -p 3000
// after
entrypoint: bundle exec rails server -u Puma -p $PORT
外部ドメイン対応
下記サイトを参考に外部ドメインを追加
MySQL対応
"ActiveRecord::ConnectionNotEstablished (Unknown MySQL server host '/cloudsql/インスタンス名' (11)):"
socket
ではなくhost
で対応していたのが問題だったと考えられる
対応完了
Rails 6 + SE環境についてのリファレンスが少なく構築できるか不安でしたが、無事動作確認することできました。
追加で必要な処理が出てきたらまた追記致します。
追加
Mac M1環境においてERROR: 137でビルドが通らない事象が発生
どうやら、grpcをインストールする際に失敗するらしい
$ docker-compose run web gem install grpc
Gem files will remain installed in /usr/local/bundle/gems/grpc-1.41.0 for inspection.
Results logged to /usr/local/bundle/extensions/aarch64-linux/2.7.0/grpc-1.41.0/gem_make.out
ERROR: 1
ネットにも情報が見つからず(python系、npm系は少しありました)
時間のかかりそうな処理であるため、intel macがあればそれで対応したほうが良さそう
参考
このスクラップは2021/10/16にクローズされました