LoginSignup
1

More than 1 year has passed since last update.

posted at

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"]

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

  1. Dockerfileコマンド
  • FROM

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

  • RUN

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

  • WORKDIR

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

  • COPY

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

  • ENTRYPOINT

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

  • EXPOSE

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

  • CMD

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

2.コード理解と用語理解

  • set -x

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

  • curl -sL https://deb.nodesource.com/setup_14.x | bash -

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

  • 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

    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の実行権限を与える。

最後に

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

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

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

参考記事

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
What you can do with signing up
1