fix: resolve CHANGELOG.md path issue for Docker deployment
Some checks failed
Deploy BillAI / Deploy to Production (push) Has been cancelled

- Update changelog.go to use binary directory as base path
  - Uses os.Executable() instead of relative path '..'
  - Automatically adapts to local and Docker environments

- Modify server Dockerfile build context
  - Change context from ./server to project root (.)
  - Update COPY commands for new context
  - Add CHANGELOG.md to container image

- Update AGENTS.md guidelines
  - Explicitly specify relative path format for file references

This ensures the changelog API works correctly in both local development
and Docker deployment environments.
This commit is contained in:
clz
2026-04-02 20:45:24 +08:00
parent 31932502d0
commit bb717faac3
4 changed files with 14 additions and 7 deletions

View File

@@ -120,4 +120,4 @@ Upload: ZIP/XLSX → Extract → Convert UTF-8 CSV → Detect bill type → Dedu
- **Dependencies:** Check `package.json`/`go.mod`/`requirements.txt` before adding new packages
- **Tests:** Always run relevant test suite before committing changes
- **Git commits:** Provide clear messages explaining the "why" of changes
- **File references:** Use `file_path:line_number` format when mentioning code locations
- **File references:** Use relative `file_path:line_number` format (e.g., `server/handler/changelog.go:12`) when mentioning code locations

View File

@@ -27,8 +27,8 @@ services:
# Go 后端服务
server:
build:
context: ./server
dockerfile: Dockerfile
context: .
dockerfile: server/Dockerfile
container_name: billai-server
restart: unless-stopped
ports:

View File

@@ -1,5 +1,6 @@
# Go 服务 Dockerfile
# 多阶段构建:编译阶段 + 运行阶段
# 构建上下文项目根目录docker-compose context: .
# ===== 编译阶段 =====
FROM golang:1.24-alpine AS builder
@@ -10,11 +11,11 @@ WORKDIR /build
ENV GOPROXY=https://goproxy.cn,direct
# 先复制依赖文件,利用 Docker 缓存
COPY go.mod go.sum ./
COPY server/go.mod server/go.sum ./
RUN go mod download
# 复制源代码并编译
COPY . .
COPY server/ .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o billai-server .
# ===== 运行阶段 =====
@@ -35,6 +36,9 @@ ENV TZ=Asia/Shanghai
COPY --from=builder /build/billai-server .
COPY --from=builder /build/config.yaml .
# 复制项目根目录的 CHANGELOG.md
COPY CHANGELOG.md .
# 创建必要目录
RUN mkdir -p uploads outputs

View File

@@ -20,8 +20,11 @@ func ParseChangelog() ([]ChangelogEntry, error) {
// 获取项目根目录
rootDir := os.Getenv("PROJECT_ROOT")
if rootDir == "" {
// 如果未设置,使用相对路径推测
rootDir = ".."
// 使用二进制文件所在目录作为基准
execPath, err := os.Executable()
if err == nil {
rootDir = filepath.Dir(execPath)
}
}
changelogPath := filepath.Join(rootDir, "CHANGELOG.md")