6.2 源码构建
源码构建
生产二进制应先构建管理端,把产物复制到 static/admin/,再构建 Go 服务。main.go 会嵌入静态资源、模板与迁移。
获取源码
git clone --recurse-submodules https://github.com/muleiwu/dwz-server.git
cd dwz-server
git submodule update --init --recursiveadmin-webui 是独立仓库子模块。只下载 ZIP 通常不会包含它。
工具版本
go version # 1.26+
node --version # 推荐 22+
corepack --version根目录 go.work 用于维护者本地同时开发 ../../open/go-web。若该相对目录不存在,使用已在 go.mod 锁定的 go-web 模块版本:
GOWORK=off go mod download如果你的目录布局包含对应 go-web 源码,则可直接使用工作区。
构建管理端
corepack enable
cd admin-webui
corepack install
pnpm install --frozen-lockfile
pnpm run build:antd --filter='!./docs'
cd ..
mkdir -p static/admin
cp -R admin-webui/apps/web-antd/dist/. static/admin/构建后端
GOWORK=off CGO_ENABLED=0 go build \
-ldflags="-s -w \
-X 'main.Version=v2.22.3' \
-X 'main.BuildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)' \
-X 'main.GitCommit=$(git rev-parse --short HEAD)'" \
-o dwz-server .当前可注入变量只有 main.Version、main.BuildTime、main.GitCommit;旧构建脚本中的 main.Environment 已不存在。
验证产物
./dwz-server start
curl --fail http://127.0.0.1:8080/health/simple访问 /admin/ 并检查静态资源。如果页面 404,确认构建前 static/admin/ 已包含前端 dist 内容。
Docker 与 GoReleaser
docker build -t dwz-server:local .
goreleaser release --snapshot --cleanDockerfile 使用 Node 22 和 Go 1.26,自动完成两阶段构建。GoReleaser 用于多平台快照和发布产物,配置位于 .goreleaser.yaml。