![よっしー](https://yossi-note.com/wp-content/themes/cocoon-master/images/man.png)
よっしー
こんにちは。よっしーです(^^)
今日は、dockerで作るRedmine環境について解説しています。
背景
dockerで作るRedmine環境について調査する機会がありましたので、その時の内容を備忘として記事に残しました。
構成ファイル一覧
下記のファイルを用意します。各ファイルの内容は次のセクションもしくは、次回以降の記事に記載しています。
new file: redmine/Dockerfile
new file: mysql/Dockerfile
new file: compose.yml
new file: Makefile
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と呼ばれるファイルで、Dockerコンテナの操作を簡単にするためのターミナルコマンドを定義しています。
SHELL = /bin/bash
- このMakefileで使用するシェルをbashに設定しています。
WORK_DIR = ./
- 作業ディレクトリを現在のディレクトリに設定しています。
.DEFAULT_GOAL := help
- Makefileを実行した際に、ターゲットが指定されていない場合、helpターゲットを実行するように設定しています。
.PHONY: ターゲット名
- 疑似ターゲットを定義しています。これらのターゲットはファイルではなく、コマンドを実行するためのものです。
ps:
- Docker Composeで実行中のコンテナの状態を表示します。
build:
- Docker Composeを使ってDockerイメージをビルドします。
up:
- Docker Composeを使ってコンテナを起動します。-dオプションでバックグラウンドで実行します。
down:
- 実行中のコンテナを停止して削除します。
clean:
- すべてのコンテナ、イメージ、ボリュームを削除して、環境をクリーンな状態に戻します。
logs:
- 実行中のコンテナのログを表示します。
help:
- Makefileに定義されているターゲットとその説明を表示します。
このMakefileを使うことで、Docker Composeを使ったアプリケーションの開発や運用を簡単に行えるようになります。例えば、make build
でイメージをビルド、make up
でコンテナを起動、make logs
でログを確認、make down
で停止、make clean
で環境をクリーンアップすることができます。
おわりに
今日は、dockerで作るRedmine環境について解説しました。
次回は動作するまでを説明していきたいと思います。
![よっしー](https://yossi-note.com/wp-content/themes/cocoon-master/images/man.png)
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント