DockerでRuby on Railsの環境を構築する際のDockerfileのコマンド及びコード理解

なぜ記事を書こうと思ったか

Rails用のDockerfileを作成する際にコマンド及びコードの理解を備忘録として残すため。

Dockerfileとコマンド説明

  • Dockerfile
FROM ruby:[バージョン]
RUN set -x && curl -sL https://deb.nodesource.com/setup_14.x | bash -

RUN set -x && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo 'deb http://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list

RUN set -x && apt-get update -qq && apt-get install -yq nodejs yarn vim default-mysql-client

RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

# Add a script to be executed every time the container starts.
COPY ./forDocker/rails/entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

以下にコマンド及びコードの解説を致します。

Dockerfileコマンド

  • FROM

Dockerイメージとバージョンの指定

  • RUN

コンテナ内で実行するコマンドの指定

  • WORKDIR

Dockerfileで設定した命令の作業ディレクトリの指定

  • COPY

ローカルのディレクトリ及びファイルをDockerコンテナにマウント

  • ENTRYPOINT

最初に実行するコマンドの指定

  • EXPOSE

Dockerコンテナを公開するポート番号の指定

  • CMD

デフォルトで実行するコマンドの指定

コード理解と用語理解

  • `set -x`

[set]はシェルの設定を確認、変更するコマンドで[-x]によって、シェルが実行したコマンドとその引数を出力。

NodeSourceをインストール。数字部分でNode.jsのバージョンを指定。(今回の場合はNodejsバージョン14を指定)

Debian系で新しいyarnをインストールできるようにする。

  • `apt-get`

Debian系のディストリビューションのパッケージ管理システムであるAPTライブラリを利用してパッケージを操作管理するコマンド

  • `apt-get update -qq && apt-get install -yq nodejs yarn vim default-mysql-client`

APTパッケージ管理システムのアップデート及びnodejs、yarnなどのインストール

  • `chmod +x /usr/bin/entrypoint.sh`

全てのユーザーに/usr/bin/entrypoint.shの実行権限を与える。

最後に

私の記事だけで理解できない部分があったら、適宜調べてみて下さい。

一つ一つのコードを理解することで、理解できていない事が少なくなり、成長していけると信じています笑

ここまで読んで頂き有難うございました〜。

参考記事

Nginx+Rails6.0+MySQL8.0+Adminer:docker-compose で rails new | Zenn | 北山淳也 DockerfileのRUN命令 DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】 dockerfileのEXPOSEとネットワークオプション 【 set 】コマンド――シェルの設定を確認、変更する NodeSource Node.js Binary Distributions - GitHub Ruby:2.6 のdockerコンテナでrails6.0を入れようとしたらyarnがコケた | 北山淳也 | zenn apt-get パッケージの操作・管理 - Linuxコマンド chmod コマンド