Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
215 changes: 147 additions & 68 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,108 +1,187 @@
# アプリコンテナ=view,api、DBコンテナ=db,minio

# アプリコンテナのイメージのビルド
build:
# 配色
SHELL := /bin/bash
BOLD := $(shell tput bold)
UNDERLINE := $(shell tput smul)
GREEN := $(shell tput setaf 2)
RESET := $(shell tput sgr0)

.PHONY: help
.DEFAULT_GOAL := help

help: ## このヘルプを表示
@echo ""
@echo "${BOLD}===================================================================${RESET}"
@echo "${BOLD} FinanSu 開発環境コマンド一覧${RESET}"
@echo "${BOLD}===================================================================${RESET}"
@echo ""
@echo "${BOLD}■ 開発手順${RESET}"
@echo " ${BOLD}[初回セットアップ]${RESET}"
@echo " 1. make build # イメージビルド"
@echo " 2. make run-db # DBコンテナ起動"
@echo " 3. make run # アプリコンテナ起動"
@echo ""
@echo " ${BOLD}[日常開発]${RESET}"
@echo " 1. make run-db # DBコンテナ起動"
@echo " 2. make run # アプリコンテナ起動"
@echo ""
@echo "${BOLD}■ 使用方法${RESET}"
@echo " make ${GREEN}<target>${RESET}"
@awk 'BEGIN { \
FS = ":.*?## "; \
printf "\n${BOLD}■ コマンド一覧${RESET}\n"; \
} \
/^##@/ { \
printf "\n${BOLD}${UNDERLINE}%s${RESET}\n", substr($$0, 5); \
} \
/^[a-zA-Z0-9_-]+:.*?## / { \
printf " ${GREEN}%-20s${RESET} %s\n", $$1, $$2; \
}' $(MAKEFILE_LIST)
@echo ""

##@ 開発フロー
setup: ## 開発環境をセットアップ (build > run-db > run)
@echo "$(GREEN)--- Building images... ---$(RESET)"
@make build
@echo "$(GREEN)--- Starting DB containers... ---$(RESET)"
@make run-db
@echo "$(GREEN)--- Starting App containers... ---$(RESET)"
@make run
@echo "$(GREEN)--- Setup completed! ---$(RESET)"

##@ 基本操作
build: ## アプリコンテナのイメージをビルド
docker compose build
docker compose run --rm view npm install


build-stg:
build-stg: ## ステージング環境ビルド
docker compose -f compose.stg.yml build


# アプリコンテナの起動
run:
run: ## アプリコンテナを起動
docker compose up -d

# アプリコンテナの停止
down:
down: ## アプリコンテナを停止
docker compose down

# dbコンテナの起動(基本ずっと起動しておく)
run-db:
docker compose -f compose.db.yml up -d

# dbコンテナの停止(ずっと起動したくない時はこっちで停止)
stop-db:
docker compose -f compose.db.yml down

# ビルドと起動
build-run:
build-run: ## ビルドと起動を同時実行
docker compose -f compose.db.yml up -d
docker compose up --build

# アプリコンテナボリュームの削除
del-vol:
run-rebuild: ## ボリューム削除→ビルド→起動
docker compose down -v
docker compose up --build

# 生成したコンテナ、イメージ、ボリューム、ネットワークを一括削除
del-all:
compose down --rmi all --volumes --remove-orphans
restart: ## アプリコンテナの再起動 (DBは維持)
@echo "$(GREEN)--- Restarting App Containers ---$(RESET)"
docker compose down
docker compose up -d
@echo "$(GREEN)--- App Containers Restarted ---$(RESET)"

# ボリューム削除→ビルド→起動
run-rebuild:
docker compose down -v
docker compose up --build
restart-all: ## 全コンテナの再起動
@echo "$(GREEN)--- Restarting All Containers ---$(RESET)"
docker compose down
docker compose -f compose.db.yml down
docker compose -f compose.db.yml up -d
docker compose up -d
@echo "$(GREEN)--- All Containers Restarted ---$(RESET)"

# dbとminioの停止とボリューム削除(dbを初期化したい時)
del-db:
compose -f compose.db.yml down --volumes
##@ データベース操作
run-db: ## DBコンテナを起動 (基本ずっと起動)
docker compose -f compose.db.yml up -d

# apiの起動(db起動後)
run-api:
docker compose up api
stop-db: ## DBコンテナを停止
docker compose -f compose.db.yml down

# StoryBookの起動
run-sb:
docker compose run --rm -p6006:6006 view npm run storybook
del-db: ## DBとminioの停止とボリューム削除
docker compose -f compose.db.yml down --volumes

seed:
ent-db: ## DB接続コマンド
docker compose exec db mysql -u root -proot

seed: ## テストデータの投入
docker compose run --rm api go mod tidy
docker compose run --rm api go run /app/tools/seeds/teacher_seeds.go

# 本番環境デプロイ
deploy:
docker compose -f compose.prod.yml build
docker compose -f compose.prod.yml up -d
##@ 実行・デバッグ
exec-api: ## APIコンテナに入る
docker compose exec api /bin/bash

# ローカルで本番設定で起動
run-prod:
docker compose -f compose.local-prod.yml build
docker compose -f compose.local-prod.yml up
exec-view: ## Viewコンテナに入る
docker compose exec view /bin/bash

# DB入るコマンド
ent-db:
docker compose exec db mysql -u root -proot
exec-db: ## DBコンテナに入る
docker compose -f compose.db.yml exec db /bin/bash

# eslintの実行
run-eslint:
docker compose exec view npm run lint
##@ 個別起動
run-api: ## API単体起動 (DB起動後)
docker compose up api

# apiテストの実行
run-test:
docker compose exec api go test ./test -v
run-sb: ## StoryBook起動
docker compose run --rm -p6006:6006 view npm run storybook

gen:
run-swagger: ## Swagger起動
docker compose -f compose.swagger.yml up -d

##@ 一括操作
run-all: ## DB・アプリ・Swaggerを一括起動
make run-db
make run
make run-swagger

##@ コード生成・整形
gen: ## API・フロント両方のコード生成
make gen-api
make gen-front-api

gen-api:
gen-api: ## API側コード生成
docker compose run --rm api oapi-codegen -config /openapi/config.yaml /openapi/openapi.yaml

gen-front-api:
gen-front-api: ## フロント側API生成
docker compose run --rm view npx orval
docker compose run --rm view npm run format

run-swagger:
docker compose -f compose.swagger.yml up -d

run-all:
make run-db
make run
make run-swagger

gen-er:
gen-er: ## ER図生成
docker run -v "./er:/output" --net="host" schemaspy/schemaspy:snapshot -t mysql -host localhost:3306 -db finansu_db -u root -p root -connprops allowPublicKeyRetrieval\\=false -s finansu_db

format:
format: ## コード整形
docker compose run --rm view npm run format

##@ デバッグ・ログ
logs: ## 全コンテナのログを表示
docker compose logs -f

logs-api: ## APIコンテナのログを表示
docker compose logs -f api

logs-view: ## Viewコンテナのログを表示
docker compose logs -f view

logs-db: ## DBコンテナのログを表示
docker compose -f compose.db.yml logs -f db

logs-minio: ## Minioコンテナのログを表示
docker compose -f compose.db.yml logs -f minio

##@ テスト・検証
run-test: ## APIテスト実行
docker compose exec api go test ./test -v

run-eslint: ## ESLint実行
docker compose exec view npm run lint

##@ クリーンアップ
del-vol: ## アプリコンテナボリューム削除
docker compose down -v

del-all: ## 全てのコンテナ・イメージ・ボリューム削除
docker compose down --rmi all --volumes --remove-orphans

##@ 本番・ステージング
deploy: ## 本番環境デプロイ
docker compose -f compose.prod.yml build
docker compose -f compose.prod.yml up -d

run-prod: ## ローカルで本番設定起動
docker compose -f compose.local-prod.yml build
docker compose -f compose.local-prod.yml up
Loading