aimodels-prices/Dockerfile

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"]