Dockerfileの書き方


DockerfileはDockerイメージを作成するための定義ファイルです。docker buildコマンドでイメージを構築するための定義ファイルです。

🚌 Dockerfileのサンプル

まずはRailsを使うためのDockerfileのサンプル。

# Dockerfile
FROM ruby:2.4.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev postgresql-client
RUN mkdir /app
# bundle install を高速化するための記述
WORKDIR /tmp
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install
ADD . /app
WORKDIR /app
CMD [bundle, exec, rails, server]

🚕 Dockerfileのコマンド

Dockerfileで使えるコマンドは次のような物があります。

コマンド名 説明
FROM ベースイメージの指定
RUN コマンドの実行
CMD docker runの際に起動するコマンド
ENTRYPOINT docker runの際に起動するコマンド
LABEL コンテナとイメージに付与できるラベル
EXPOSE コンテナ内のプロセスがListenするポート
ENV 環境変数
ADD/COPY ホストのOSからコンテナにファイルをコピーする
VOLUME 外部からマウント可能なボリューム
USER RUN, CMD, ENTRYPOINTを実行するユーザー
WORKDIR 作業ディレクトリ
ONBUILD 次のビルドで実行させるコマンド

🐯 Dockefileのコメント

#で始まる行はコメントとして処理されます。

# コメント

😼 .dockerignoreファイル

.dockerignoreはDockerで無視するファイルを指定できるファイルです。

# コメント
*/temp*
*/*/temp*
temp?
`
  • # コメント : コメントとしてこの行を無視します
  • */temp* : tempで始まる名称のファイルとディレクトリを除外
  • */*/temp* : ルートから2つ下のディレクトリのtempで始まる名称のファイルとディレクトリを除外
  • temp? : tempに一致するファイルとディレクトリを除外 (例: /tempa)

🐹 Alpineイメージ

Alpineはセキュアで軽量なLinuxのディストリビューションのひとつです。
musl libcとBusyBoxベースで、パッケージ管理にはAPKという独自のシステムを使っています。
こちらを使うとUbuntuなど使う場合に比べて、Dockerイメージのサイズを小さくできます。

🏀 参考リンク

📚 おすすめの書籍