LoginSignup
7
8

More than 5 years have passed since last update.

dockerでrailsアプリの作成

Last updated at Posted at 2017-04-10

注意:ただ試しにdockerを利用してrailsの最初のWelcome aboardの画面をローカルホストで表示したいという完全初心者向け。そして備忘録なので細かいことは書いてないです

公式サイトからdockerのinstall

railsプロジェクトのディレクトリの作成

$ mkdir rails_test
$ cd rails_test

rubyのインストール

rubyのインストールだがもちろんローカルにはインストールしない。
dockerにあらかじめ用意されているイメージをpullしてrubyをインストールする。

$ docker pull ruby:2.3.0

バージョンは適宜変えてください。

Gemfileの生成

Gemfileの生成のためにbundle initをする。

$ docker run --rm -v "$PWD":/usr/src/rails_test -w /usr/src/rails_test ruby:2.3.0 bundle init

Gemfileへの追加

rails4を入れたかったのでGemfileに追加

gem 'rails', '4.2.6' 

イメージ内にgemを埋め込む為にGemfile.lockを作成

$ touch Gemfile.lock

Dockerfileの作成

Dockerfileにはコンテナの構成内容の記述を行う。そのDockerfileをビルドすることでイメージが使用するイメージが作成される。

FROM ruby:2.3.0

ENV APP_ROOT /usr/src/rails_test

WORKDIR $APP_ROOT

RUN apt-get update && \
    apt-get install -y nodejs \
                       mysql-client \
                       postgresql-client \
                       sqlite3 \
                       --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*

COPY Gemfile $APP_ROOT
COPY Gemfile.lock $APP_ROOT

RUN \
  echo 'gem: --no-document' >> ~/.gemrc && \
  cp ~/.gemrc /etc/gemrc && \
  chmod uog+r /etc/gemrc && \
  bundle config --global build.nokogiri --use-system-libraries && \
  bundle config --global jobs 4 && \
  bundle install && \
  rm -rf ~/.gem

* dockerのイメージとコンテナの違いに関して参考にした資料
http://www.atmarkit.co.jp/ait/articles/1407/08/news031.html
https://www.slideshare.net/zembutsu/docker-images-containers-and-lifecycle

ビルドしてイメージの作成

docker build -t developer_name/rails_test .

イメージがちゃんとできているか確認
$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
developer_name/rails_test    latest              3bc0f71d6be6        About an hour ago   890 MB
ruby                2.3.0               7ca70eb2dfea        12 months ago       725 MB

railsアプリの作成

イメージができたのでrails newでアプリを作成する。

$ docker run --rm -it -v "$PWD":/usr/src/rails_test developer_name/rails_test rails new .

railsアプリのイメージ構築のためにDockerfileを編集する

FROM ruby:2.3.0

ENV APP_ROOT /usr/src/rails_test

WORKDIR $APP_ROOT

RUN apt-get update && \
    apt-get install -y nodejs \
                       mysql-client \
                       postgresql-client \
                       sqlite3 \
                       --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*

COPY Gemfile $APP_ROOT
COPY Gemfile.lock $APP_ROOT

RUN \
  echo 'gem: --no-document' >> ~/.gemrc && \
  cp ~/.gemrc /etc/gemrc && \
  chmod uog+r /etc/gemrc && \
  bundle config --global build.nokogiri --use-system-libraries && \
  bundle config --global jobs 4 && \
  bundle install && \
  rm -rf ~/.gem

COPY . $APP_ROOT      #追加

EXPOSE  3000                    #追加
CMD ["rails", "server", "-b", "0.0.0.0"]       #追加

Dockerfileを変更したのでビルドしてイメージを再作成する。

$ docker build -t developer_name/rails_test .

とりあえずrailsを動かしたい方はこれで以下のコマンドを実行すれば立ち上がります。
$ docker run -d -p 3000:3000 developer_name/rails_test

以上です。

本当はdocker-composeを使ってrails + mysqlで立ち上げたくて試しにやってみたが、ralsアプリのコンテナとmysqlのコンテナの接続がうまくできなくて1日半くらいハマってしまったけどとりあえずrailsがdockerで動いているところが見たかったので今回はこれにしました。

rails + mysqlは今後やってまたアップしたいと思います。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8