12.4. Red Hat OpenShift Service on AWS へのアプリケーションのデプロイ
アプリケーションを Red Hat OpenShift Service on AWS にデプロイできます。
rails-app
プロジェクトの作成後、新規プロジェクトの namespace に自動的に切り替えられます。
Red Hat OpenShift Service on AWS へのアプリケーションのデプロイでは 3 つの手順を実行します。
- Red Hat OpenShift Service on AWS の PostgreSQL イメージからデータベースサービスを作成します。
- データベースサービスと連動する Red Hat OpenShift Service on AWS の Ruby 2.0 ビルダーイメージおよび Ruby on Rails ソースコードのフロントエンドサービスを作成します。
- アプリケーションのルートを作成します。
12.4.1. データベースサービスの作成
手順
Rails アプリケーションには実行中のデータベースサービスが必要です。このサービスには、PostgreSQL データベースイメージを使用します。
データベースサービスを作成するために、oc new-app
コマンドを使用します。このコマンドには、必要な環境変数を渡す必要があります。この環境変数は、データベースコンテナー内で使用します。これらの環境変数は、ユーザー名、パスワード、およびデータベースの名前を設定するために必要です。これらの環境変数の値を任意の値に変更できます。変数は以下のようになります。
- POSTGRESQL_DATABASE
- POSTGRESQL_USER
- POSTGRESQL_PASSWORD
これらの変数を設定すると、以下を確認できます。
- 指定の名前のデータベースが存在する
- 指定の名前のユーザーが存在する
- ユーザーは指定のパスワードで指定のデータベースにアクセスできる
手順
データベースサービスを作成します。
$ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
データベース管理者のパスワードを設定するには、直前のコマンドに以下を追加します。
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
進行状況を確認します。
$ oc get pods --watch
12.4.2. フロントエンドサービスの作成
アプリケーションを Red Hat OpenShift Service on AWS にデプロイするには、アプリケーションが置かれるリポジトリーを指定する必要があります。
手順
フロントエンドサービスを作成し、データベースサービスの作成時に設定されたデータベース関連の環境変数を指定します。
$ 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
このコマンドを実行すると、Red Hat OpenShift Service on AWS が指定された環境変数を使用して、ソースコードの取得、ビルダーのセットアップ、アプリケーションイメージのビルド、新しく作成されたイメージのデプロイを実行します。このアプリケーションには
rails-app
という名前を指定します。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" } ],
ビルドプロセスを確認します。
$ oc logs -f build/rails-app-1
ビルドが完了したら、Red Hat OpenShift Service on AWS で実行中の Pod を確認します。
$ oc get pods
myapp-<number>-<hash>
で始まる行が表示されますが、これは Red Hat OpenShift Service on AWS で実行中のアプリケーションです。データベースの移行スクリプトを実行してデータベースを初期化してからでないと、アプリケーションは機能しません。これを実行する 2 種類の方法があります。
実行中のフロントエンドコンテナーから手動で実行する
rsh
コマンドでフロントエンドコンテナーに exec を実行します。$ oc rsh <frontend_pod_id>
コンテナー内から移行を実行します。
$ RAILS_ENV=production bundle exec rake db:migrate
development
またはtest
環境で Rails アプリケーションを実行する場合には、RAILS_ENV
の環境変数を指定する必要はありません。
- デプロイメント前のライフサイクルフックをテンプレートに追する
12.4.3. アプリケーションのルートの作成
アプリケーションのルートを作成するためにサービスを公開できます。