mirror of
https://github.com/ctwj/urldb.git
synced 2025-11-25 03:15:04 +08:00
53 lines
938 B
Docker
53 lines
938 B
Docker
# 前端构建阶段
|
|
FROM node:20-slim AS frontend-builder
|
|
|
|
# 安装pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
WORKDIR /app/web
|
|
COPY web/package*.json ./
|
|
COPY web/pnpm-lock.yaml ./
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
COPY web/ ./
|
|
RUN pnpm run build
|
|
|
|
# 前端运行阶段
|
|
FROM node:18-alpine AS frontend
|
|
|
|
RUN npm install -g pnpm
|
|
|
|
WORKDIR /app
|
|
COPY --from=frontend-builder /app/web/.output ./.output
|
|
COPY --from=frontend-builder /app/web/package*.json ./
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["node", ".output/server/index.mjs"]
|
|
|
|
# 后端构建阶段
|
|
FROM golang:1.21-alpine AS backend-builder
|
|
|
|
WORKDIR /app
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
|
|
|
|
# 后端运行阶段
|
|
FROM alpine:latest AS backend
|
|
|
|
WORKDIR /root/
|
|
|
|
# 复制后端二进制文件
|
|
COPY --from=backend-builder /app/main .
|
|
|
|
# 创建uploads目录
|
|
RUN mkdir -p uploads
|
|
|
|
# 暴露端口
|
|
EXPOSE 8080
|
|
|
|
# 运行应用
|
|
CMD ["./main"] |