# 使用官方 Go 镜像作为基础镜像 FROM golang:1.24.4-alpine AS builder # 安装必要的工具 RUN apk update && apk add tzdata RUN apk add --no-cache nodejs npm git # 安装 pnpm RUN npm install -g pnpm # 设置工作目录 WORKDIR /app # 复制后端 COPY ./server ./server # 复制前端 COPY ./web ./web # 构建前端项目 WORKDIR /app/web RUN echo "y" |pnpm install RUN pnpm run build # 构建后端项目 WORKDIR /app/server # 删除之前的web资源并重新创建目录 RUN rm -rf ./resource/public/admin/ RUN mkdir -p ./resource/public/admin/ # 复制编译好的web资源到server目录 RUN cp -rf ../web/dist/* ./resource/public/admin/ # 编译hotgo服务端 RUN go mod download # 安装gf RUN wget -O gf "https://github.com/gogf/gf/releases/latest/download/gf_$(go env GOOS)_$(go env GOARCH)" && chmod +x gf && ./gf install -y && rm ./gf RUN gf build # 使用轻量级的 alpine 镜像作为运行环境 FROM alpine:latest # 安装 ca-certificates 用于 HTTPS 请求 RUN apk --no-cache add ca-certificates tzdata # 设置时区 ENV TZ=Asia/Shanghai # 设置工作目录 WORKDIR /app # 从构建阶段复制编译好的二进制文件 COPY --from=builder /app/server/temp/hotgo . # 复制配置文件(如果存在) COPY --from=builder /app/server/manifest/config/ ./manifest/config/ # 暴露端口 EXPOSE 8000 WORKDIR /app CMD ./hotgo