はじめに
いままで Ruby on Rails については触れたことはなかったのですが、習得の必要性が生まれたためチュートリアルをはじめました。
rails コマンドを実行するための環境セットアップに随分時間がかかってしまったため、
整備して次回からはまらないようにしたいと思いエントリを投稿しました。
検証環境
| |
準備
タイトル通り、今回は Docker を利用してアプリケーションの新規作成や起動を行うため、 Docker をインストールしておきましょう。(ここではDockerのインストール方法は取り上げません。)
rails コマンド実行用のDockerイメージ
rails コマンドを簡単に実行するためのDockerイメージを自作し公開しています。
こちらを利用したいと思います。
以下のコマンドを実行し、バージョンが表示されればDockerイメージを利用する準備は完了です。
| |
アプリケーションの作成
アプリケーションを作成するには rails new コマンドを実行します。
先程のDockerイメージを使って、 rails new コマンドを実行します。
rails-tutorial というアプリケーション名で作成します。
docker run コマンドのオプションについて補足しておきます。
--rmオプションは実行後にDockerコンテナ内のファイル変更内容を残さないオプションです。- あってもなくても良いのですが、PCの不要なディスク消費を抑えるために付与。
-v $PWD:/app:cachedオプションで、カレントディレクトリをコンテナの/appディレクトリにマウントします。--workdir /appオプションで、コンテナ内のカレントディレクトリを/appディレクトリとします。
| |
問題なくアプリケーションを作成できたら、カレントディレクトリを変更しておきます。
| |
依存パッケージのインストール
bundle コマンドを使って、依存パッケージをインストールします。
依存パッケージの設定は Gemfile に記述されています。
rails new コマンドで作成した直後はSQLiteデータベースを使って動作するようになっていますが、最新バージョンでは正常に動作しないため 1.3.x バージョンを利用するように書き換えておきます。
また本番環境ではPostgreSQLを利用したいため(Heroku利用を想定)、 pg パッケージを追加しておきます。
| |
bundle install を実行します。
実行時のオプションは環境変数で指定します。Dockerの -e オプションを指定して環境変数を設定します。
| |
アプリケーションの起動
アプリケーションを起動します。
rails server コマンドで開発用サーバを起動できますが、外部からアクセスするために -b 0.0.0.0 オプションを設定しておきます。
開発用サーバはコンテナ内で3000ポートを使って起動しているため、3000ポートを外部に公開します。
| |
ひとこと
最後の「アプリケーションの起動」は、コマンド実行後30秒ほどまたないとサーバが正しく起動しない場合がありました。 原因がわからない。。