11.4.2. フロントエンドサービスの作成

アプリケーションを OpenShift Container Platform にデプロイするには、アプリケーションが置かれるリポジトリーを指定する必要があります。

手順

  1. フロントエンドサービスを作成し、データベースサービスの作成時に設定されたデータベース関連の環境変数を指定します。

    $ oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql

    このコマンドでは、OpenShift Container Platform は指定された環境変数を使用してソースコードの取得、ビルダーのセットアップ、アプリケーションイメージのビルド、新規に作成されたイメージのデプロイを実行します。このアプリケーションには rails-app という名前を指定します。

  2. rails-app デプロイメント設定の JSON ドキュメントを参照して、環境変数が追加されたかどうかを確認できます。

    $ oc get dc rails-app -o json

    以下のセクションが表示されるはずです。

    出力例

    env": [
        {
            "name": "POSTGRESQL_USER",
            "value": "username"
        },
        {
            "name": "POSTGRESQL_PASSWORD",
            "value": "password"
        },
        {
            "name": "POSTGRESQL_DATABASE",
            "value": "db_name"
        },
        {
            "name": "DATABASE_SERVICE_NAME",
            "value": "postgresql"
        }
    
    ],

  3. ビルドプロセスを確認します。

    $ oc logs -f build/rails-app-1
  4. ビルドが完了すると、OpenShift Container Platform で Pod が実行されていることを確認します。

    $ oc get pods

    myapp-<number>-<hash> で始まる行が表示されますが、これは OpenShift Container Platform で実行中のアプリケーションです。

  5. データベースの移行スクリプトを実行してデータベースを初期化してからでないと、アプリケーションは機能しません。これを実行する 2 種類の方法があります。

    • 実行中のフロントエンドコンテナーから手動で実行する

      • rsh コマンドでフロントエンドコンテナーに exec を実行します。

        $ oc rsh <frontend_pod_id>
      • コンテナー内から移行を実行します。

        $ RAILS_ENV=production bundle exec rake db:migrate

        development または test 環境で Rails アプリケーションを実行する場合には、RAILS_ENV の環境変数を指定する必要はありません。

    • デプロイメント前のライフサイクルフックをテンプレートに追する