Makefile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # ================================
  2. # Claude Code Hub - dev 工具链
  3. # ================================
  4. #
  5. # 目标:
  6. # 1) 通过 Docker 启动 PostgreSQL + Redis(供本机 bun dev 使用)
  7. # 2) 通过 Docker 本地构建 app 镜像并联动 DB/Redis(无需预构建镜像)
  8. #
  9. # 说明:
  10. # - 在项目根目录可直接运行 `make <target>`(根 Makefile 会转发到此处)
  11. # - 可通过环境变量覆盖端口/账号等(见 help)
  12. .PHONY: help dev db app build build-nocache app-rebuild app-nocache prune-images rm-app-image compose clean migrate db-shell redis-shell logs logs-app logs-db logs-redis reset status stop
  13. PROJECT_NAME ?= cch-dev
  14. COMPOSE_FILE ?= docker-compose.yaml
  15. COMPOSE := docker compose -f $(COMPOSE_FILE) -p $(PROJECT_NAME)
  16. # -------- 可配置项(均可通过环境变量覆盖) --------
  17. export DB_USER ?= postgres
  18. export DB_PASSWORD ?= postgres
  19. export DB_NAME ?= claude_code_hub
  20. export POSTGRES_PORT ?= 5432
  21. export REDIS_PORT ?= 6379
  22. export APP_PORT ?= 23000
  23. export ADMIN_TOKEN ?= cch-dev-admin
  24. export APP_VERSION ?= dev
  25. export ENABLE_RATE_LIMIT ?= true
  26. POSTGRES_HOST ?= 127.0.0.1
  27. REDIS_HOST ?= 127.0.0.1
  28. LOCAL_DSN ?= postgres://$(DB_USER):$(DB_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT)/$(DB_NAME)
  29. LOCAL_REDIS_URL ?= redis://$(REDIS_HOST):$(REDIS_PORT)
  30. help:
  31. @echo ""
  32. @echo "Claude Code Hub - dev 工具链"
  33. @echo ""
  34. @echo "常用命令:"
  35. @echo " make db 启动 PostgreSQL + Redis(Docker)"
  36. @echo " make dev 启动 db/redis 后运行 bun dev(连接 Docker db/redis)"
  37. @echo " make app 本地构建并启动 app 镜像 + db + redis(无需预构建镜像)"
  38. @echo " make build 仅本地构建 app 镜像"
  39. @echo " make app-rebuild 强制重建并重建容器(适合代码改动后确保生效)"
  40. @echo " make app-nocache 无缓存重建 app 镜像并重建容器(排查构建缓存问题)"
  41. @echo " make prune-images 清理悬空(dangling)镜像(解决多次构建残留)"
  42. @echo " make rm-app-image 删除本地 app 镜像标签(claude-code-hub-local:*)"
  43. @echo " make logs 查看所有服务日志"
  44. @echo " make status 查看容器状态"
  45. @echo " make clean 停止并删除容器(保留数据)"
  46. @echo " make reset 停止并删除容器与数据(危险操作)"
  47. @echo ""
  48. @echo "可覆盖环境变量:"
  49. @echo " PROJECT_NAME=$(PROJECT_NAME)"
  50. @echo " DB_USER=$(DB_USER) DB_PASSWORD=$(DB_PASSWORD) DB_NAME=$(DB_NAME)"
  51. @echo " POSTGRES_PORT=$(POSTGRES_PORT) REDIS_PORT=$(REDIS_PORT) APP_PORT=$(APP_PORT)"
  52. @echo " ADMIN_TOKEN=$(ADMIN_TOKEN) APP_VERSION=$(APP_VERSION) ENABLE_RATE_LIMIT=$(ENABLE_RATE_LIMIT)"
  53. @echo ""
  54. @echo "本机 dev 默认连接串:"
  55. @echo " DSN=$(LOCAL_DSN)"
  56. @echo " REDIS_URL=$(LOCAL_REDIS_URL)"
  57. @echo ""
  58. db:
  59. @$(COMPOSE) up -d postgres redis
  60. @$(COMPOSE) ps
  61. dev: db
  62. @echo ""
  63. @echo "Running bun dev with:"
  64. @echo " DSN=$(LOCAL_DSN)"
  65. @echo " REDIS_URL=$(LOCAL_REDIS_URL)"
  66. @echo ""
  67. @DSN="$(LOCAL_DSN)" REDIS_URL="$(LOCAL_REDIS_URL)" ENABLE_RATE_LIMIT="$(ENABLE_RATE_LIMIT)" \
  68. ADMIN_TOKEN="$(ADMIN_TOKEN)" bun run dev
  69. build:
  70. @$(COMPOSE) --profile app build app
  71. build-nocache:
  72. @$(COMPOSE) --profile app build --no-cache app
  73. app:
  74. @$(COMPOSE) --profile app up -d --build
  75. @$(COMPOSE) ps
  76. @echo ""
  77. @echo "App is starting. Visit: http://localhost:$(APP_PORT)"
  78. @echo ""
  79. app-rebuild:
  80. @$(COMPOSE) --profile app up -d --build --force-recreate
  81. @$(COMPOSE) ps
  82. app-nocache:
  83. @$(MAKE) build-nocache
  84. @$(MAKE) app-rebuild
  85. prune-images:
  86. @docker image prune -f
  87. rm-app-image:
  88. @docker image rm -f "claude-code-hub-local:$(APP_VERSION)" 2>/dev/null || true
  89. migrate: db
  90. @DSN="$(LOCAL_DSN)" bun run db:migrate
  91. db-shell: db
  92. @$(COMPOSE) exec postgres psql -U "$(DB_USER)" -d "$(DB_NAME)"
  93. redis-shell: db
  94. @$(COMPOSE) exec redis redis-cli
  95. logs:
  96. @$(COMPOSE) logs -f --tail=200
  97. logs-app:
  98. @$(COMPOSE) --profile app logs -f --tail=200 app
  99. logs-db:
  100. @$(COMPOSE) logs -f --tail=200 postgres
  101. logs-redis:
  102. @$(COMPOSE) logs -f --tail=200 redis
  103. status:
  104. @$(COMPOSE) ps
  105. stop:
  106. @$(COMPOSE) stop
  107. clean:
  108. @$(COMPOSE) down --remove-orphans
  109. reset:
  110. @$(COMPOSE) down -v --remove-orphans
  111. @rm -rf ../data/postgres-dev ../data/redis-dev
  112. compose:
  113. @echo "$(COMPOSE)"