Closed11

[rails]GKEからGAE SEへの移行作業

yjiro0403yjiro0403

従来RailsをGKEで運用していたが、運用コストが少ないGAE SEへ移行する。

構築環境

ruby: 2.7.0 (2.7.3を使用していましたがGAEでエラーが出たためバージョンダウンさせました)
rails 6 (API モード)
cloudsql (mysql)
GAE (SE)

参考

https://cloud.google.com/appengine/docs/standard/ruby

https://github.com/GoogleCloudPlatform/ruby-docs-samples/tree/master/appengine

https://cloud.google.com/ruby/rails/using-cloudsql-mysql

https://qiita.com/hc0208/items/6374a1aafc70a4aba0a5

yjiro0403yjiro0403

再デプロイしてログを確認したところ下記のエラーが発生

/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
yjiro0403yjiro0403

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を試みる

https://qiita.com/takeyuweb/items/0777eb54d717a88d4b5c

さらにGemfileにgrpcを追加

gem 'grpc'
yjiro0403yjiro0403

下記エラーが発生

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
yjiro0403yjiro0403

MySQL対応

"ActiveRecord::ConnectionNotEstablished (Unknown MySQL server host '/cloudsql/インスタンス名' (11)):"

socketではなくhostで対応していたのが問題だったと考えられる

yjiro0403yjiro0403

対応完了

Rails 6 + SE環境についてのリファレンスが少なく構築できるか不安でしたが、無事動作確認することできました。
追加で必要な処理が出てきたらまた追記致します。

yjiro0403yjiro0403

追加

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があればそれで対応したほうが良さそう

参考

https://meta.discourse.org/t/error-rebuilding-bundler-exits-with-code-137/46463

このスクラップは2021/10/16にクローズされました