Dockerで React on Ruby on Railsをするための最適なDocker Imageを作った

2019年2月27日

こんにちは。
最近はDockerを使ってReact on Ruby on Railsの環境を扱うプロジェクトが増えてきました。
今まではRubyのオフィシャルのDockerイメージをベースに各プロジェクトごとのカスタマイズをするDockerfileを作って、その中でnodeもインストールしていました。

そうすると、ちょっとしたことではありますが
デプロイ時のビルドが時間がかかるようになってて、Docker Imageもサイズが大きくなるという問題がありまして
ベースにするイメージとしてRubyとNodeだけが普通に入ったDocker Imageが欲しくなりました。

ですので、なるべくステップ数を減らすのと同時に、ビルド時間も省きたいということで
ビルド済みのオフィシャルのDocker Imageからモジュールをコピーしてくるようにしてみました。

$ docker images
REPOSITORY           TAG                              IMAGE ID            CREATED           SIZE
ruby                 2.6.1-stretch                    ae96a4ad4f3f        2 weeks ago       868MB
ruby                 2.6.1-alpine3.8                  54be3a03b2ce        3 weeks ago       40MB
node                 10.15.1-stretch                  8fc2110c6978        2 weeks ago       897MB
node                 10.15.1-alpine                   fe6ff768f798        3 weeks ago       70.7MB
gendosu/ruby-node    ruby-2.6.1-node-10.15.1-alpine   3587a2208693        2 hours ago       350MB
gendosu/ruby-node    ruby-2.6.1-node-10.15.1          abb6858a8103        2 hours ago       929MB
old_image            ruby-2.3.7-node-8.11.3           f62c2628dc94        6 months ago      2.67GB

 

結果、RubyとNodeを使える状態で、通常のDocker Imageだと1GBを切るサイズになりました。

Ruby on Rails関連でGemを追加していったら、1GBは超えるかもしれませんが

以前作成したDocker Imageからはかなりダイエット出来ました。

 

 

 

https://cloud.docker.com/repository/docker/gendosu/ruby-node

使い方は

とりあえずコンテナとして起動してみたい場合は

docker run –rm -it gendosu/ruby-node:ruby-2.6.1-node-10.15.1 bash

DockerfileでFROMに書く場合は

FROM gendosu/ruby-node:ruby-2.6.1-node-10.15.1

と書いてください。

gendosu/ruby-nodeについては、ロケールを変える等の操作はまったくしておらず、純粋にRubyモジュールとNodeモジュールを両方含んだDocker Imageという位置づけで作成しましたので、ロケールを変える、フォントファイルを追加する等は各自Dockerfileで行ってください。

そのうち、gendosu/ruby-node-jpを作成予定です。

未分類

Posted by GENDOSU