用途:在本地启动 sandbox-api 的 Go 开发环境,sandbox-api 运行在 Docker 中并通过 Air 实现热重载,改动 sandbox-api/ 下的 Go 文件会被自动加载,无需重启容器。适用于本地开发或测试 sandbox-api 代码改动。
准备工作:一次性安装开发依赖,执行 make dependencies,会安装 air(Go 热重载)、swag(OpenAPI 文档生成)、yq(YAML 处理,通过 brew)。
启动开发服务器:启动前需先杀掉占用 8080 端口的进程:lsof -ti :8080 | xargs kill -9 2>/dev/null || true,然后执行 docker-compose up dev。该命令会从 docker/alpine.Dockerfile 构建,挂载 ./sandbox-api 与 ./tmp 卷,设置 SANDBOX_DEV_MODE=true,暴露 8080 与 3010 端口,并通过 air 实现热重载。测试前需等待日志出现 Starting Sandbox API server on :8080。
验证运行:curl http://localhost:8080/health,或测试文件系统端点 curl http://localhost:8080/filesystem/~。
替代方式(无需 Docker,迭代更快):先执行端口清理命令,再执行 make api,会在 sandbox-api/ 目录下以 SANDBOX_LOG_DIR=./tmp/log 运行 air,需要本地安装 Go。
精简开发镜像(不挂载源码):执行 docker-compose up dev-slim,从 docker/slim.Dockerfile 构建,无卷挂载、无热重载,用于测试接近生产环境的镜像。
单元测试:执行 make test,在 sandbox-api/ 内运行 go test -v ./...,属于快速进程内测试。
构建与运行镜像:make docker-build 构建 blaxel/sandbox-api:latest,make docker-run 运行它。
日志:开发日志写入宿主机的 ./tmp/log/(由容器挂载),可用 tail -f tmp/log/*.log 跟踪。限制:资料未提供更多环境要求、配置项或故障排查说明。