初めに
私のリポジトリで、Docker環境でrailsの開発環境を整えることができるクイックスタートを用意しています。今回は、そこに配置したDockerfileについてまとめていこうと思います。
https://github.com/naokikubo2/quickstart/blob/master/Dockerfile
Dockerfileとは
docker imageを作成する際のコマンドをコード化したもの
公式ドキュメント
Dockerfileで重要なコマンドは、
- FROM
- RUN
- COPY
の3つだけです。
FROM
ベースとなるimageの指定
https://docs.docker.com/engine/reference/builder/#from
RUN
コマンドの実行
https://docs.docker.com/engine/reference/builder/#run
COPY
ローカルからdocker imageへのファイルの転送
https://docs.docker.com/engine/reference/builder/#copy
ベースイメージの読み込み
FROM ruby:2.7
FROM 行では、ruby:2.7
のベースイメージを読み込んでいます。
FROM 命令は、イメージビルドのための処理ステージを初期化し、ベース・イメージ を設定します。後続の命令がこれに続きます。 このため、正しい Dockerfile は FROM 命令から始めなければなりません。 ベース・イメージは正しいものであれば何でも構いません。 簡単に取り掛かりたいときは、公開リポジトリ から イメージを取得します。dockerリファレンス
言語の指定
ENV LANG C.UTF-8
rails consoleで日本語を使うために、UTF-8をここで設定します。
警告を取り除くための処理
ENV DEBCONF_NOWARNINGS yes
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE yes
ENV XDG_CACHE_HOME /tmp
EXPOSE 3000
- 何かインストールする時に、「本当にインストールしますか?」の様な警告が表示されて、いちいち「yes」を選択したりすることありますよね?1, 2行目は、警告が来たら必ずyesを選択するというものです。
APTって何って方は、以下参照
APTとは、Linuxでソフトウェアの導入や管理、削除に用いられるパッケージ管理システムの一つ。また、それを操作するコマンド(apt)。Debian系ディストリビューションで標準的に使われている。IT用語辞典
apt-key は、apt が パッケージを認証するのに使用するキーの一覧を管理するのに使用します。ubuntu manual
-
3行目:Dockerのマウント領域に生成されるファイルが、キャッシュディレクトリの書き込み権限が無くてエラーを吐くケースがあリます。XDG_CACHE_HOMEに書き込み権限のあるディレクトリを指定してますが、どうもRailsのみの使用では発生しなさそうです。問題なければ外してもいいと思います。
-
4行目:expose(晒す)なので、 ポート番号3000を晒します。つまり、晒したポート番号3000からデータを受け付けるという意味です。
コンテナパッケージのアップデートとインストール
RUN apt-get update -qq && apt-get install -y \
build-essential \
libpq-dev \
vim \
less \
graphviz
- upadateしてからインストールするので、最新バージョンのパッケージを使用できます。
- ビルドに必要なツールがインストールされる
- PostgreSQLの接続に必要。
- vimのインストール(ターミナルでファイル内容を操作できます)
- lessコマンド(linuxコマンドの1つで、ファイルの中身を表示することができる)を追加
- オープンソースのツールパッケージgraphvizを使う為(ER図を出力する時に必要です)
yarnのインストール
yarnとnpmはJavaScriptでサーバーサイドの処理を行うために使うプログラム(Node.js)上で使うパッケージマネージャーということです。
RUN apt-get install apt-transport-https
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
- 2行目:pubkeyは認証を行うための公開鍵です。
- 3行目:現在のyarnのstable版情報を保存。teeコマンドを使うことによって、echoで出力した内容を保存します。
- 4行目:yarnのインストールです。
ワークディレクトリを設定
# setting work directory
RUN mkdir /app
WORKDIR /app
- 2行目:プロジェクト用のディレクトリを作成
- 3行目:ワークディレクトリに設定
環境変数を設定
ENV HOME /app
スクリプトやコンテナに入ったときに使う用。
Gemfileを作成
COPY Gemfile /app/Gemfile
「Gemfile」というローカルファイルを、プロジェクトのディレクトリにコピー。
参考資料