よっしー
こんにちは。よっしーです(^^)
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しています。
背景
PHPのビルトインサーバを利用した環境を構築する機会がありましたので、その時の内容を備忘として記事に残しました。
前回の記事は、ビルトインサーバについて解説しています。
ファイル一覧
下記のファイルを作成しました。この記事では、php_server/Dockerfile と compose.yml について解説しています。
new file: Makefile
new file: compose.yml
new file: php_server/Dockerfile
new file: php_server/src/router.php
php_server/Dockerfile
FROM php:8.3.4-cli
このコードは Dockerfile と呼ばれるファイルの一部です。Dockerfileは、Dockerコンテナをビルドするための指示を含むテキストファイルです。具体的には、イメージのベースとなるDockerイメージを指定し、その上に必要なパッケージや設定を追加する手順を記述します。
FROM php:8.3.4-cli
:これはDockerイメージのベースとなるものを指定しています。php:8.3.4-cli
は、PHP 8.3.4のコマンドラインインターフェース(CLI)バージョンを使用することを意味します。つまり、このDockerイメージはPHPのCLIツールを実行するために使用されます。
このコードは、PHPのCLI環境を含むDockerコンテナを構築するためのステップの一部です。
compose.yml
version: '3.8'
services:
php_server:
build: ./php_server
container_name: php_server
working_dir: /work
volumes:
- ./php_server/src:/work
ports:
- 8080:8080
command:
php -S 0.0.0.0:8080 router.php
networks:
- net
networks:
net:
このコードは Docker Compose の設定ファイルです。Docker Composeは、複数のDockerコンテナを一括で管理するためのツールで、複雑なアプリケーションを構築する際に便利です。
それでは、このコードの意味を解説します:
version: '3.8'
:これはDocker Composeファイルのバージョンを指定しています。このファイルはバージョン3.8の構文を使用していることを示しています。services:
:ここからがサービスの定義です。サービスはDockerコンテナのグループで、それぞれのサービスは個別のコンテナとして実行されます。php_server:
:これはサービスの名前です。php_server
という名前のサービスを定義しています。build: ./php_server
:このサービスは./php_server
ディレクトリ内のDockerイメージをビルドします。container_name: php_server
:コンテナの名前をphp_server
に設定します。working_dir: /work
:コンテナ内の作業ディレクトリを/work
に設定します。volumes:
:ホストマシンのディレクトリとコンテナのディレクトリをマウントします。この例では、ホストの./php_server/src
ディレクトリをコンテナの/work
ディレクトリにマウントしています。ports:
:ホストとコンテナのポートをマッピングします。この例では、ホストの8080ポートをコンテナの8080ポートにマッピングしています。command:
:コンテナが起動した際に実行されるコマンドを指定します。この例では、php -S 0.0.0.0:8080 router.php
というコマンドを実行しています。networks:
:コンテナが所属するネットワークを指定します。この例では、net
という名前のネットワークに所属させています。
networks:
:ネットワークの定義を行います。この例では、net
という名前のネットワークを定義しています。
このDocker Composeファイルは、php_server
という名前のコンテナをビルドし、指定された設定で実行するためのものです。
おわりに
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント