Kento
Dockerfileとは?
2026年10月28日
見出しはありません
要約を生成中...
Dokcerについてキャッチアップ中なので、メモ用に書いています📝
Dockerfileとはテキストファイルであり、イメージを作り上げるための実行コマンドをまとめるもの。 docker buildを実行すると順次コマンドが自動的に実行され処理を行い、イメージが構築されます。
イメージとは、Dockerコンテナの土台のこと。
環境構築に必要なライブラリやインストール情報をすべてまとめた土台そのもの。
イメージを構築するにあたり、どういう構成で設定する必要があるのか、 例を用いてみていきましょう。
Dockerfileでは、命令ごとに1つのレイヤーを作成していきます。
# PHP_FPM入りのイメージを土台にする
FROM php:8.5-fpm-bookworm
# OSのパッケージ・PHP拡張をインストール
# pdo_mysql PHPからMySqlへ接続する拡張
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
unzip \
libonig-dev \
libzip-dev \
&& docker-php-ext-install \
pdo_mysql \
mbstring \
zip \
bcmath \
&& rm -rf /var/lib/apt/lists/*
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
# コンテナ内でコマンドを実行する場所
WORKDIR /var/www/html
作りたいDockerイメージの環境を指定するところです。 例えば、OS・プログラミング言語・フレームワークなど「イメージ」を指定する場所となります。 今回は、PHP用のDockerコンテナを構築するのでPHPのイメージを指定しています。
使いたいイメージの書き方は、各公式ページに書かれています!
PHPならPHP公式イメージのページに。
例 | 土台になる環境 |
|---|---|
| PHP・PHP-FPM入りの環境 |
| Node.js入りの環境 |
| Nginx入りの環境 |
| Ubuntuの基本環境 |
FROM php:8.5-fpm-bookwormPHP: バージョン8.5
PHP-FPM: WebサーバであるNginxから渡されたPHP処理を実行する仕組み
Debian BookWorm: コンテナ内のLinux環境Dockerイメージを構築(ビルド)の途中で、Linuxコマンドを実装するところ。
例えば、空っぽのDockerイメージを構築する際に、イメージの中に必要なGitやDBをインストールしたり、Next.jsアプリケーションを特定の場所(/app)に用意して!という命令をLinuxコマンドが代わりに実行してくれるように設定できる場所なんです。
apt-get update : インストール可能なパッケージ一覧情報を更新 apt-get instal... : ツールやライブラリをインストール docker-php-ext-install... : PHP拡張をインストール rm -rf ... : 不要になった一覧情報を削除
環境構築後の、初期値のファイルや追加・変更のファイル(page.tsxやpackage.json)などフォルダ丸ごと、COPYしてイメージの中に反映される役割。
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer--from=composer:2 : Docker Hubというネット上の倉庫の中にある、composerバージョン2を指定。
/usr/bin/composer : /usr/bin/composerにあるPHP専用のパッケージ管理(Laravelなどの依存関係を管理)本体ファイルを指定。
/usr/local/bin/composer: PHPパッケージ管理のCOPY先をディレクトリーへ指定。
つまり、PHP専用のパッケージ管理をDockerイメージの中のローカル先へCOPYをしています。 なぜ、localへコピーする必要があるのか? composerコマンドで組み立てるためには、PHP専用のパッケージ管理(PHPやLaravelのインストール)をDockerイメージ内のローカルへコピーする必要があるから。
作業ディレクトリーを絶対パスで指定する場所。
WORKDIR /var/www/htmlここでは、NginxであるWEBサーバーに表示させるWEBアプリケーションファイル(php, Laravel, HTML, CSS, JavaScriptなど)を配置する。 つまり、実行環境(画面表示など)の指定場所です。
Dockerについて無知だったのでなんとかDockerfileについて、紐解いてみました。 参考になったら幸いです。
要約
コメント
まだコメントはありません。