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イメージのサイズを小さくできます。

🚜 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)