章: 第1章: Docker基礎と環境理解
「手順書」ではなく「コード」で環境を管理する
「新しいメンバーが入るたびに環境構築で1日かかる」「自分のマシンでは動くのに本番で動かない」——こうした問題の多くは、環境をドキュメントで管理していることが原因です。
Dockerfileを使うと、セットアップ手順をコードとして記述し、誰でも・いつでも・どこでも同じ環境を再現できるようになります。
Dockerfileを理解すると何が変わるか
Dockerfileは「このイメージを使う」「このパッケージをインストールする」「このコマンドを実行する」という手順を、順番に記述したファイルです。一度書けば以下が変わります。
- 新規メンバーのセットアップが「
docker build1コマンド」で完了する - 開発・ステージング・本番で同じイメージを使い回せる
- 環境の変更履歴が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を実際にビルドして、コンテナを起動・停止する操作を体で覚えていきます。