Docker で Ruby on Rails の環境を作る方法:unicorn + nginx
Docker で Ruby on Rails の環境を作成する方法について紹介します。サーバーは、unicorn + nginx を採用します。
なお既に Docker はインストール済として説明していくので、インストールが済んでない方はまず Docker のインストールを行ってください。
Dockerのコンテナ立ち上げ
イメージの取得
今回は、Ruby on Rails 4.2.6の公式イメージを取得します。
Dockerfile を使う方法もありますが、今回は docker pull でイメージを取得してからコンテナを作成する方法をとります。
$ docker pull rails:4.2.6
docker images で、取得したイメージを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE rails 4.2.6 ebe8911521f9 2 weeks ago 837 MB
コンテナの作成
次に、取得したイメージからコンテナを作成します。-p オプションでポート80をコンテナ側のポート80にポートフォワーディングして、名前は myproject としています。
$ docker run -p 80:80 --name myproject -i -t rails:4.2.6 /bin/bash
これでコンテナが作成されたので、以下よりコンテナ内での作業となります。
ちなみこのイメージの OS は、Debian 8.4 が使われています。
$ cat /etc/debian_version 8.4
Ruby on Railsの環境作成
必要なものをインストール
apt-get をアップデートしてから vim と nginx をインストールします。
$ apt-get update $ apt-get -y install vim nginx
nginx を起動しておきます。
$ service nginx start
GemとBundlerのインストール時に、–no-rdoc –no-ri オプションを指定しなくて良いように .gemrc ファイルを作成し、以下のように追加し保存します。これは、オプションなのでスキップしても大丈夫です。
$ vi ~/.gemrc gem: --no-rdoc --no-ri
Ruby on Railsのプロジェクト作成
任意のディレクトリに移動し、rails new でプロジェクトを作成します。今回は、myproject という名前にします。
$ cd /var/www/ $ rails new myproject
myproject に移動します。
$ cd myproject
unicorn + nginx の環境設定
unicornの設定
Gemfile の unicorn の部分のコメントアウト#を外します。
$ vi Gemfile gem 'unicorn'
unicorn をインストールします。
$ bundle install
次に、unicorn の設定ファイル unicorn.rb を作成します。
$ vi config/unicorn.rb
uniconrn.rb の内容は以下のようになります。ディレクトリは必要に応じて変更してください。
/var/www/myproject/config/unicorn.rb
pid '/var/www/myproject/tmp/unicorn.pid' listen '/var/www/myproject/tmp/unicorn.sock' stderr_path '/var/www/myproject/log/unicorn.log' stdout_path '/var/www/myproject/log/unicorn.log' worker_processes 2 timeout 30
nginxの設定
nginx の設定ファイルを作成します。今回は unicorn.conf という名前で作成します。
server や root などで指定しているディレクトリは、 unicorn.rb と合わせてください。
/etc/nginx/conf.d/unicorn.conf
upstream unicorn { server unix:/var/www/myproject/tmp/unicorn.sock fail_timeout=0; } server { listen 80; server_name localhost; root /var/www/myproject/public; try_files $uri @unicorn; location @unicorn { proxy_set_header Host $http_host; proxy_pass http://unicorn; } }
nginx -t で設定ファイルのシンタックスチェックを行ってから、nginx を再起動します。
$ nginx -t $ service nginx restart
/var/www/myproject で、unicorn を起動するコマンドを実行します。
$ bundle exec unicorn -c config/unicorn.rb -D
ブラウザで、http://localhost にアクセスすると、以下のような画面が表示されます。
これでセットアップが完了しました。