Elastic Beanstalk はAWSのサービスを簡単にセットアップできるサービスで、インスタンスをいろいろなプラットフォームを動かすことができます。
今回はElastic BeanstalkでセットアップしたDockerのイメージ上で、Ruby on Railsを動かすために自分がやってみた方法をご紹介します。
間に合わなさそうなので長くなりそうなので、今回はElastic beanstalk の設定と Docker設定ファイルの取得までです。
まず、ローカルでRailsのプロジェクトを用意します。
Rubyは2.2を使います。
Elastic beanstalkの環境を作成
事前定義はDockerを選びます。
まずはサンプルアプリケーションで作成して、後から書き換えます。
データベースはRDSを利用しますので、チェックをいれて作成します。
EC2のキーペアも作成します。
RDSの設定もあわせて行います。ユーザー名、パスワードを入れて進めます。
サービスロール等もウィザードに沿って作ります。
全部できたら「起動」します。
eb コマンドラインインターフェースのインストール
Elastic beanstalk にコンソールからデプロイするために、ebコマンドラインインターフェースをインストールします。
homebrewからもインストールできますが、最新版を常に使いたい場合は、pip コマンド経由でインストールします。pip コマンドをインストールするには setuptools が必要なので、こちらもあわせてインストールする必要があります。
$ curl https://bootstrap.pypa.io/ez_setup.py -o - | python
$ easy_install pip
$ pip install awsebcli
Railsのルートで eb init コマンドを実行して、設定を入れます。
ここから eb deploy に進めばよいのですが、いくらか追加の設定が必要です。
Dockerfile等の設定ファイルの準備
Rails を Docker 上で簡単に動かすために、 passenger-docker のイメージを利用します。
https://github.com/phusion/passenger-docker
いくらか設定が必要なのですが、こちらのスレッドに設定ファイルがまとまっているので、こちらを拝借します。
RailsのルートディレクトリにDockerfile, Dockerrun.aws.json, .dockerignore, nginx-env.conf, nginx.confをコピペします。
環境設定の設定
Elastic beanstalk は設定画面で環境変数をセットすることができます。必要な環境変数は立ち上がったあとのElastic beanstalkの設定画面からセットしておきます。さらに、nginxがrailsに環境変数を渡せるようにするために、 nginx-env.conf
に設定を追加する必要があります。
つづく・・