Dockerfileでよく使う命令や書き方を目的別にまとめています。
ベースイメージの指定、ファイルのコピー、パッケージのインストール、環境変数、起動コマンドなどをすぐに確認できます。
Dockerコマンドを確認したい場合はDocker コマンド チートシート、
Docker Composeの設定ファイルを書きたい場合はcompose.yaml チートシートを参照してください。
※<名前>や<パス>は、実際の値に置き換えて使用してください。
よく使う基本形
FROM node:24-alpine
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Node.jsアプリケーションのシンプルなDockerfile例です。
実際には使用する言語やフレームワーク、アプリケーション構成に合わせて変更してください。
ベースイメージ
ベースイメージを指定する
FROM <イメージ名>:<タグ>
Dockerイメージの土台となるベースイメージを指定します。
軽量イメージを使用する
FROM node:24-alpine
Alpine Linuxベースなどの軽量なイメージを使用します。
必要なツールやライブラリが含まれていない場合があるため注意してください。
ファイル・ディレクトリ
作業ディレクトリを指定する
WORKDIR <パス>
以降のRUN、COPY、CMDなどで使用する作業ディレクトリを指定します。
存在しない場合は作成されます。
ファイルをコピーする
COPY <コピー元> <コピー先>
ビルドコンテキストにあるファイルやディレクトリをイメージ内へコピーします。
複数のファイルをコピーする
COPY package.json package-lock.json ./
複数のファイルをまとめて指定した場所へコピーします。
現在の内容をまとめてコピーする
COPY . .
ビルドコンテキスト内のファイルを現在の作業ディレクトリへコピーします。
ビルド中にコマンドを実行する
コマンドを実行する
RUN <コマンド>
Dockerイメージのビルド中にコマンドを実行します。
パッケージをインストールする
RUN apt-get update && apt-get install -y curl
ビルド中にOSのパッケージをインストールする例です。
複数のコマンドを続けて実行する
RUN <コマンド1> && <コマンド2>
前のコマンドが成功した場合だけ次のコマンドを実行します。
長いコマンドを複数行で書く
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
行末に\を付けると、1つの命令を複数行に分けて読みやすく記述できます。
コンテナ起動時のコマンド
デフォルトコマンドを指定する
CMD ["<コマンド>", "<引数>"]
コンテナ起動時にデフォルトで実行するコマンドや引数を指定します。
実行コマンドを指定する
ENTRYPOINT ["<コマンド>"]
コンテナ起動時に基本となる実行コマンドを指定します。
CMDよりも実行するコマンドを固定したい場合などに使用します。
環境変数・ビルド引数
環境変数を設定する
ENV <変数名>=<値>
イメージやコンテナ内で使用する環境変数を設定します。
ビルド引数を定義する
ARG <変数名>
Dockerイメージをビルドするときに外部から渡せる値を定義します。
ビルド引数にデフォルト値を設定する
ARG <変数名>=<値>
ビルド時に値が指定されなかった場合に使用するデフォルト値を設定します。
ビルド時に値を渡す
docker build --build-arg <変数名>=<値> .
DockerfileのARGで定義したビルド引数へ値を渡します。
ポート・ユーザー
使用するポートを示す
EXPOSE <ポート番号>
コンテナが使用する想定のポートを示します。
EXPOSEだけではホスト側へポートは公開されません。
実行ユーザーを指定する
USER <ユーザー名>
以降のRUNや、コンテナ起動時のCMD・ENTRYPOINTを実行するユーザーを指定します。
ビルドキャッシュを活用する
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
依存関係ファイルをソースコードより先にコピーしてインストールすると、
依存関係に変更がない場合はビルドキャッシュを再利用しやすくなります。
ソースコードだけを変更したときに、依存関係のインストール処理までやり直すのを避けられます。
.dockerignore
Dockerイメージのビルドに不要なファイルを、ビルドコンテキストから除外します。
node_modules
.git
*.log
.env
node_modulesやGit管理情報、ログなど、
イメージのビルドに不要なものを除外できます。
秘密情報を誤ってビルドコンテキストへ含めないためにも利用します。
マルチステージビルド
ビルド用の環境と実行用の環境を分け、
最終イメージには実行に必要なものだけを含める方法です。
イメージを小さくしたい場合などに利用します。
FROM <イメージ名> AS builder
# ビルド処理
FROM <実行用イメージ名>
COPY --from=builder <コピー元> <コピー先>
ASでビルド用ステージに名前を付け、
COPY --fromで別のステージから必要なファイルだけをコピーします。