コンテンツにスキップ

RubyとRuby on Rails#

序章#

私たちは、公式のRuby alpine Dockerイメージをベースに構築したRuby 3.0以上のイメージを提供しています。

以下では、Lagoon上でRailsアプリをデプロイしようとしていると仮定していますが、記述されている詳細のほとんどはフレームワークに関係なく適用可能です。

Lagoon上でRailsを動作させる#

リクエストへの応答#

Lagoonの例のリポジトリにあるRuby on Railsの例は、ここで参考になります。

docker-compose.ymlでは、rubyという名前のサービスを設定しています。これは、任意の動的リクエストを処理する主要なサービスです。

rubyサービス用に指定されたdockerfileを見てみると、ポート3000を公開していることがわかります。nginxサービスは、非静的アセットのリクエストをこのポートのrubyサービスにリダイレクトします(詳細はnginx設定ファイルを参照してください)。

ロギング#

Lagoonのロギングインフラストラクチャについては、次の文書で説明されています。 こちらのドキュメントをご覧ください。基本的に、このインフラを利用するためには、ログをUDPメッセージでudp://application-logs.lagoon.svc:5140に送信する必要があります。

Railsの例では、logstash-loggerというgemをインポートし、その後config/application.rbで以下のように初期化しています。

config/application.rb
    if ENV.has_key?('LAGOON_PROJECT') && ENV.has_key?('LAGOON_ENVIRONMENT') then
      lagoon_namespace = ENV['LAGOON_PROJECT'] + "-" + ENV['LAGOON_ENVIRONMENT']
      LogStashLogger.configure do |config|
        config.customize_event do |event|
          event["type"] = lagoon_namespace
        end
      end

      config.logstash.host = 'application-logs.lagoon.svc'
      config.logstash.type = :udp
      config.logstash.port = 5140
    end

データベース設定#

この例では、私たちのPostgreSQLイメージを使用しています(docker-compose.ymlファイルを参照してください)。LagoonでのRailsを用いたデータベースアクセスの設定は非常に簡単です。Lagoonはデータベースのホスト、名前、資格情報を環境変数として注入するため、config/database.ymlを設定します。

config/database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV.fetch("POSTGRES_USERNAME") { "drupal" } %>
  password: <%= ENV.fetch("POSTGRES_PASSWORD") { "drupal" } %>
  host: <%= ENV.fetch("POSTGRES_HOST") { "postgres" } %>
  database: <%= ENV.fetch("'POSTGRES_DATABASE'") { "drupal" } %>