Ruby
RubyOnRails
docker

とにかく簡単にDockerでRuby on Railsを動かしてみる(初心者向け)

Railsチュートリアルの環境をサクッと作る

Railsチュートリアルを見ているとCloud9を利用しているが、Dockerでサクッと環境を作りたいと思った。調べているとDockerでRailsを動かすという記事はたくさん見つかるが、DBのコンテナをdocker-composeとかで管理していたり、簡単にとりあえずRailsを試してみたい時に参考にする記事があまりなかった。Dockerfileも利用せずにruby:2.4.0をベースにRailsを動かしてみる。

手順

環境: macOS Sierra

  • まずDockerをインストールする。Docker for Macで良い。

  • 作業ディレクトリに移動する

    • ここでは/path/to/sampleとする
    • cd /path/to/sampleとしておく
  • rubyのイメージを元にDockerのコンテナを作って、そこでrails newする

    1. docker run -it -p 3000:3000 -v "$PWD":/usr/src ruby:2.4.0 /bin/bash
      • これで新しく作成されたコンテナに入る。以下2~5はコンテナ内で実行する。
      • -it/bin/bashをつけるとコンテナ内に入る。
      • -p 3000:3000でポート3000を指定。
      • -v "$PWD":/usr/srcでローカルのカレントディレクトリとコンテナの/usr/srcが同期される。テキストエディタでローカルでファイルをいじるとブラウザに反映されるようになる。
      • ruby:2.4.0でベースイメージを指定。
    2. cd /usr/src
    3. gem install bundler
    4. gem install rails
    5. rails new sampleAPP (sampleAPPのところは好きなアプリ名で良い)
  • Gemfileを修正してサーバを起動する

    1. 好きなテキストエディタで先程作成されたGemfileを開き、therubyracerの行のコメントアウトをはずす
    2. 再びコンテナ内でsampleAPPにてbundle install
    3. そのままrails s

確認する

  • localhost:3000で確認する

image.png

備考

コンテナからはexitで抜けることができる。
そうすると中に入る時は再びコンテナを起動してログインする必要がある。

docker ps -aでCONTAINER ID(HOGEHOGEだとする)を確認してから、docker start HOGEHOGEとしてdocker exec -it HOGEHOGE /bin/bashで入れる。

bundle installとかのコマンドは中に入って実行すればいい。

実際に運用する時にはDockerfile書いて、docker-composeで管理するべきだが、試しにRailsを動かしてみたい時にはこれで十分だと思う。