よっしー
こんにちは。よっしーです(^^)
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しています。
背景
PHPのビルトインサーバを利用した環境を構築する機会がありましたので、その時の内容を備忘として記事に残しました。
前回の記事は、ビルトインサーバについて解説しています。
ファイル一覧
下記のファイルを作成しました。この記事では、Makefile について解説しています。
new file: Makefile
new file: compose.yml
new file: php_server/Dockerfile
new file: php_server/src/router.php
Makefile
SHELL = /bin/bash
WORK_DIR = ./
.DEFAULT_GOAL := help
# コンテナの状態
.PHONY: ps
ps:
cd $(WORK_DIR) \
&& docker compose ps
# アプリのビルド
.PHONY: build
build:
cd $(WORK_DIR) \
&& docker compose build
# アプリの起動
.PHONY: up
up:
cd $(WORK_DIR) \
&& docker compose up -d
# アプリの停止
.PHONY: down
down:
cd $(WORK_DIR) \
&& docker compose down
# コンテナの削除
.PHONY: clean
clean:
cd $(WORK_DIR) \
&& docker compose down --rmi all --volumes --remove-orphans
# ログ
.PHONY: logs
logs:
cd $(WORK_DIR) \
&& docker compose logs
# help
.PHONY: help
help:
@grep -B 2 -E '^[a-zA-Z_-]+:' Makefile \
| grep -v '.PHONY' \
| grep -v -E '^\s*$$' \
| tr '\n' ',' \
| sed 's/--,/\n/g' \
| awk -F, '{printf "%-20s %s\n", $$2, $$1}'
Makefileをステップごとの解説は下記になります。
- SHELLとWORK_DIR:
SHELL = /bin/bash
: この行は、コマンドを実行するために使用されるシェルを/bin/bash
に設定しています。WORK_DIR = ./
:WORK_DIR
変数は現在のディレクトリ(./
)に設定されています。
- デフォルトのゴール:
.DEFAULT_GOAL := help
: この行は、特定のターゲットが指定されていない場合に実行されるデフォルトのターゲット(ゴール)を設定しています。この場合、help
に設定されています。
- ターゲットと説明:
ps
:docker compose ps
を使用してコンテナの状態を表示します。build
:docker compose build
を使用してアプリケーションをビルドします。up
:docker compose up -d
を使用してアプリケーションを起動します(デタッチモード)。down
:docker compose down
を使用してアプリケーションを停止します。clean
:docker compose down --rmi all --volumes --remove-orphans
を使用してコンテナ、イメージ、ボリューム、孤立したリソースを削除します。logs
:docker compose logs
を使用してアプリケーションのログを表示します。help
: 利用可能なターゲットとその説明を表示します。
- ヘルプターゲット:
help
ターゲットは、Makefileからターゲット名とその説明を抽出し、表示用に整形するためにgrep
、tr
、awk
を使用しています。
このMakefileは、Dockerベースのアプリケーションを管理するための便利な一連のコマンドを提供しています。これらのターゲットは、make
コマンドに続いてターゲット名(例:make ps
、make build
など)を使用して実行できます。
おわりに
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント