LoginSignup
2
1

More than 1 year has passed since last update.

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

Posted at

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

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

最後に

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

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

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

参考記事

2
1
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
2
1