第02回: Dockerfileの基本構成 — 環境をコードで定義するとはどういうことか?

章: 第1章: Docker基礎と環境理解

「手順書」ではなく「コード」で環境を管理する

「新しいメンバーが入るたびに環境構築で1日かかる」「自分のマシンでは動くのに本番で動かない」——こうした問題の多くは、環境をドキュメントで管理していることが原因です。

Dockerfileを使うと、セットアップ手順をコードとして記述し、誰でも・いつでも・どこでも同じ環境を再現できるようになります。

Dockerfileを理解すると何が変わるか

Dockerfileは「このイメージを使う」「このパッケージをインストールする」「このコマンドを実行する」という手順を、順番に記述したファイルです。一度書けば以下が変わります。

  • 新規メンバーのセットアップが「docker build 1コマンド」で完了する
  • 開発・ステージング・本番で同じイメージを使い回せる
  • 環境の変更履歴がGitで追跡できる

Dockerfileの主要命令を比較する

命令 用途 使いどころ
FROM ベースイメージを指定 必ず最初に書く
WORKDIR 作業ディレクトリを設定 cd の代わり
COPY ホストからファイルをコピー ソースコードの配置
RUN ビルド時にコマンドを実行 パッケージインストール
CMD コンテナ起動時のデフォルト命令 アプリの起動コマンド

チェックポイント: RUN はビルド時(イメージ作成時)に実行、CMD はコンテナ起動時に実行されます。この違いを混同すると「なぜか起動しない」問題が発生します。

最小構成のDockerfileサンプル


FROM php:8.3-cli

WORKDIR /app
COPY . /app

RUN apt-get update     && apt-get install -y git unzip     && docker-php-ext-install pdo pdo_mysql

CMD ["php", "-v"]

このDockerfileは「PHP 8.3環境に必要なパッケージを入れ、ソースをコピーし、起動時にPHPのバージョンを表示する」という最小構成です。まずこのまま動かし、その後 CMD を書き換えて動作の変化を確認してみましょう。

まとめ & 次のステップ

  • Dockerfileは「環境セットアップ手順をコード化したもの」
  • FROM → RUN → COPY → CMD の流れが基本パターン
  • RUN はビルド時、CMD はコンテナ起動時に実行される点を区別する
  • 最初は1つの命令を変えるだけでどう変わるかを確認する

次回は「イメージビルドと実行」を学びます。書いたDockerfileを実際にビルドして、コンテナを起動・停止する操作を体で覚えていきます。

Related Articles