diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7e5d3ac --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +# 构建阶段 +FROM node:18-alpine AS builder +WORKDIR /app +COPY package*.json ./ +RUN npm ci --production +COPY . . +RUN npm install -g pkg && \ + pkg server.js --targets node18-linux-x64 --output app + +# 运行时阶段 +FROM alpine:3.18 +RUN apk add --no-cache libstdc++ +WORKDIR /app +COPY --from=builder /app/app . + +# 安全配置 +RUN addgroup -S appgroup && \ + adduser -S appuser -G appgroup && \ + chown -R appuser:appgroup /app +USER appuser + +EXPOSE 3001 +HEALTHCHECK --interval=30s --timeout=3s \ + CMD wget -qO- http://localhost:3001/health || exit 1 + +ENTRYPOINT ["./app"] \ No newline at end of file