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で別のステージから必要なファイルだけをコピーします。




