mirror of
https://github.com/woodchen-ink/aimodels-prices.git
synced 2025-07-18 05:32:00 +08:00
58 lines
1.2 KiB
Docker
58 lines
1.2 KiB
Docker
# 第一阶段:构建后端
|
|
FROM golang:1.21-alpine AS backend-builder
|
|
|
|
WORKDIR /app/backend
|
|
|
|
# 安装依赖
|
|
COPY backend/go.mod backend/go.sum ./
|
|
RUN go mod download
|
|
|
|
# 复制后端源代码
|
|
COPY backend/ .
|
|
|
|
# 编译后端
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
|
|
|
|
# 第二阶段:构建前端
|
|
FROM node:18-alpine AS frontend-builder
|
|
|
|
WORKDIR /app/frontend
|
|
|
|
# 安装依赖
|
|
COPY frontend/package.json frontend/package-lock.json ./
|
|
RUN npm ci
|
|
|
|
# 复制前端源代码
|
|
COPY frontend/ .
|
|
|
|
# 构建前端
|
|
RUN npm run build
|
|
|
|
# 第三阶段:最终镜像
|
|
FROM alpine:3.18
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装 nginx
|
|
RUN apk add --no-cache nginx
|
|
|
|
# 创建数据目录
|
|
RUN mkdir -p /app/data
|
|
|
|
# 复制后端二进制文件
|
|
COPY --from=backend-builder /app/backend/main ./
|
|
COPY backend/config/nginx.conf /etc/nginx/nginx.conf
|
|
|
|
# 复制前端构建产物
|
|
COPY --from=frontend-builder /app/frontend/.next/static /app/frontend/static
|
|
COPY --from=frontend-builder /app/frontend/public /app/frontend/public
|
|
COPY --from=frontend-builder /app/frontend/.next/standalone /app/frontend
|
|
|
|
# 复制启动脚本
|
|
COPY scripts/start.sh ./
|
|
RUN chmod +x start.sh
|
|
|
|
EXPOSE 80
|
|
|
|
# 启动服务
|
|
CMD ["./start.sh"] |