You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.7 KiB

allowed-tools description name
Bash Command: deploy-local (imported from Claude Code) cmd-deploy-local

启动本机开发环境

在 Windows 上直接运行 go run main.go,数据库使用 WSL 中的 MySQL 和 Redis。

环境信息

项目 连接信息
MySQL localhost:33306 root/Lanqi123456 db:new-api
Redis localhost:36379
后端 localhost:3000
前端 localhost:5173(dev server)
管理员 root / 12345678

参数

用户可能在 $ARGUMENTS 中传入:

  • (空) — 启动全部(MySQL/Redis + 前端 + 后端)
  • --backend-only — 只启动后端(MySQL/Redis + 后端)
  • --frontend-only — 只启动前端 dev server
  • --stop — 停止所有服务(后端进程 + 前端进程)

执行步骤

步骤 1:确保 WSL 中 MySQL 和 Redis 运行

wsl -- bash -c "cd /root/new-api-dev && docker compose up -d"

等待 MySQL 就绪(最多 30 秒):

until wsl -- bash -c "mysql -h 127.0.0.1 -P 3306 -u root -pLanqi123456 -e 'SELECT 1'" 2>/dev/null; do sleep 2; done

步骤 2:杀掉旧进程(如果端口被占用)

检查并杀掉占用 3000 端口的进程:

netstat -ano | grep ":3000 " | grep LISTENING | awk '{print $5}' | sort -u | while read pid; do taskkill //PID $pid //F 2>/dev/null; done

检查并杀掉占用 5173 端口的进程(如果需要启动前端):

netstat -ano | grep ":5173 " | grep LISTENING | awk '{print $5}' | sort -u | while read pid; do taskkill //PID $pid //F 2>/dev/null; done

步骤 3:启动服务

前端(后台,仅在非 --backend-only 时):

cd web && bun run dev

后端(后台,仅在非 --frontend-only 时),带环境变量:

export SQL_DSN="root:Lanqi123456@tcp(localhost:33306)/new-api"
export REDIS_CONN_STRING="redis://localhost:36379"
export SESSION_SECRET="dev-secret-do-not-use-in-prod"
export SESSION_NAME="session_dev"
export DEBUG=1
export ERROR_LOG_ENABLED=true
export BATCH_UPDATE_ENABLED=true
export TZ=Asia/Shanghai
go run main.go

步骤 4:等待就绪并验证

等待后端就绪:

until curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/status | grep -q "200"; do sleep 2; done

步骤 5:报告状态

向用户报告:

  • 各服务状态(MySQL/Redis/后端/前端)
  • 访问地址
  • 如果有服务启动失败,报告具体错误

停止服务(--stop

杀掉 3000 和 5173 端口上的进程即可。MySQL/Redis 容器保持运行(数据持久化)。

要求

  • 所有服务使用 run_in_background 启动
  • 等待后端就绪后再报告
  • 如果编译失败,报告具体错误
  • 启动完成后提示用户可以使用 curl 或浏览器访问