a78eef73a8
- 在 Dockerfile 中添加 CHANGELOG.md 文件复制到镜像中 - 修复前端在 Docker 环境下无法读取版本信息的问题 - 更新文档描述以反映构建和运行时的版本信息读取需求 - 调整测试用例描述以匹配实际的构建和运行场景
42 lines
1.3 KiB
Docker
42 lines
1.3 KiB
Docker
# 构建 Next.js 前端产物。
|
|
FROM oven/bun:1.3.13 AS web-build
|
|
|
|
WORKDIR /app/web
|
|
COPY web/package.json web/bun.lock ./
|
|
RUN --mount=type=cache,target=/root/.bun/install/cache bun install --frozen-lockfile --registry=https://registry.npmmirror.com --cache-dir=/root/.bun/install/cache
|
|
COPY VERSION /app/VERSION
|
|
COPY CHANGELOG.md /app/CHANGELOG.md
|
|
COPY web ./
|
|
RUN bun run build
|
|
|
|
# 构建 Go 后端入口。
|
|
FROM golang:1.25-alpine AS api-build
|
|
|
|
WORKDIR /app
|
|
COPY go.mod go.sum ./
|
|
COPY config ./config
|
|
COPY handler ./handler
|
|
COPY middleware ./middleware
|
|
COPY model ./model
|
|
COPY repository ./repository
|
|
COPY router ./router
|
|
COPY service ./service
|
|
COPY main.go ./
|
|
RUN go build -o /server .
|
|
|
|
# 运行镜像:Next.js 对外监听 3000,Go 只在容器内部监听 8080。
|
|
FROM oven/bun:1.3.13
|
|
|
|
WORKDIR /app
|
|
COPY VERSION /app/VERSION
|
|
COPY CHANGELOG.md /app/CHANGELOG.md
|
|
COPY --from=api-build /server /app/server
|
|
COPY --from=web-build /app/web /app/web
|
|
ENV PROMPT_DATA_DIR=/app/data/prompts
|
|
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/*
|
|
RUN mkdir -p /app/data/prompts
|
|
|
|
EXPOSE 3000
|
|
# 先启动内部 Go API,再由 Next.js 提供页面并代理 /api/*。
|
|
CMD ["sh", "-c", "PORT=8080 /app/server & cd /app/web && HOSTNAME=0.0.0.0 PORT=3000 bun run start"]
|