注意:ただ試しに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は今後やってまたアップしたいと思います。