よっしー
こんにちは。よっしーです(^^)
今日は、Docker環境でJMeterの実行環境を構築する方法について解説しています。
背景
JMeterを利用した負荷試験をする機会がありましたので、その時の内容を備忘として記事に残しました。
前回記事の内容
前回は、下記のファイル一覧の compose.yml を解説しました。本記事では、Makefile について解説しています。
new file: jmeter/Dockerfile
new file: jmeter/entrypoint.sh
new file: jmeter/test.sh
new file: jmeter/tests/trivial/plan.jmx
new file: Makefile
new file: compose.yml
Makefile
SHELL = /bin/bash
WOKR_DIR = ./
.DEFAULT_GOAL := help
# コンテナの状態
.PHONY: ps
ps:
cd $(WOKR_DIR) \
&& docker compose ps
# アプリのビルド
.PHONY: build
build:
cd $(WOKR_DIR) \
&& docker compose --profile tools build
# コンテナの削除
.PHONY: clean
clean:
cd $(WOKR_DIR) \
&& docker compose --profile tools down --rmi all --volumes --remove-orphans
# ログ
.PHONY: logs
logs:
cd $(WOKR_DIR) \
&& docker compose logs
# 実行
.PHONY: run
run:
cd $(WOKR_DIR) \
&& docker compose run -it --rm jmeter bash test.sh
# 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は、Docker Composeを使用してコンテナを管理するための一連のターゲットを定義しています。各ターゲットは特定の操作を実行します。以下に、各ターゲットの説明を示します。
SHELL = /bin/bash
: Makefileが使用するシェルを/bin/bash
に設定します。
: 作業ディレクトリを現在のディレクトリに設定します。WORK_DIR
= ./.DEFAULT_GOAL := help
: Makefileのデフォルトのターゲットをhelp
に設定します。これは、Makefileを実行するときに特定のターゲットを指定しない場合に実行されるターゲットです。
各ターゲットは.PHONY
と宣言されており、これはそれらがファイル名ではなく、単にコマンドのラベルであることを示します。
ps
: Docker Composeで稼働中のコンテナの状態を表示します。build
:tools
プロファイルを使用してDocker Composeでアプリケーションをビルドします。clean
:tools
プロファイルを使用してDocker Composeで作成されたコンテナ、イメージ、ボリュームを削除し、孤立したコンテナも削除します。logs
: Docker Composeで管理されているコンテナのログを表示します。run
:jmeter
サービスを対話的に実行し、完了後にコンテナを削除します。test.sh
スクリプトを実行します。help
: Makefile内のターゲットとその説明を抽出して表示します。
このMakefileは、開発プロセスを自動化し、コマンドを簡単に実行できるようにするために使用されます。Makefileは、プログラムのコンパイルやリンクなど、ファイルが変更されたときに自動的に更新する必要があるタスクを記述するために使用されます。
おわりに
今日は、Docker環境でJMeterの実行環境を構築する方法について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント