From 2c0073f2667dacac6162005cfdbe4e9c3c6e8f66 Mon Sep 17 00:00:00 2001 From: wood chen Date: Sat, 14 Jun 2025 18:05:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0Dockerfile=E4=BB=A5=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E5=89=8D=E7=AB=AF=E4=BE=9D=E8=B5=96=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E5=92=8C=E6=BA=90=E4=BB=A3=E7=A0=81=E5=A4=8D=E5=88=B6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E8=B0=83=E6=95=B4=E5=B7=A5=E4=BD=9C=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=92=8C=E6=9E=84=E5=BB=BA=E5=91=BD=E4=BB=A4=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA=E8=BF=87=E7=A8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index f7582b1..70abf2f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,26 +3,14 @@ FROM node:22-alpine AS frontend-builder WORKDIR /app/web -# 复制前端依赖文件(优先缓存依赖层) +# 复制前端依赖文件 COPY web/package*.json ./ # 安装前端依赖(包括开发依赖,构建需要) -RUN npm ci --prefer-offline --no-audit --progress=false +RUN npm ci -# 复制前端配置文件 -COPY web/next.config.ts ./ -COPY web/tsconfig.json ./ -COPY web/postcss.config.mjs ./ -COPY web/components.json ./ -COPY web/eslint.config.mjs ./ -COPY web/next-env.d.ts ./ - -# 复制前端源代码目录 -COPY web/app ./app -COPY web/components ./components -COPY web/lib ./lib -COPY web/types ./types -COPY web/public ./public +# 复制前端源代码 +COPY web/ ./ # 构建前端静态文件 RUN npm run build @@ -45,19 +33,15 @@ RUN go mod download && go mod verify COPY . . # 构建后端应用 -RUN CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build \ - -ldflags='-w -s -extldflags "-static"' \ - -a -installsuffix cgo \ - -o random-api . +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o random-api . # 运行阶段 FROM alpine:latest # 安装必要的工具 -RUN apk --no-cache add ca-certificates tzdata tini && \ - adduser -D -s /bin/sh appuser +RUN apk --no-cache add ca-certificates tzdata tini -WORKDIR /app +WORKDIR /root/ # 从后端构建阶段复制二进制文件 COPY --from=backend-builder /app/random-api . @@ -65,12 +49,8 @@ COPY --from=backend-builder /app/random-api . # 从前端构建阶段复制静态文件 COPY --from=frontend-builder /app/web/out ./web/out -# 创建必要的目录并设置权限 -RUN mkdir -p /app/data/logs && \ - chown -R appuser:appuser /app - -# 切换到非root用户 -USER appuser +# 创建必要的目录 +RUN mkdir -p /root/data/logs # 暴露端口 EXPOSE 5003