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]によって、シェルが実行したコマンドとその引数を出力。
- `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パッケージ管理システムのアップデート及び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 コマンド