From ae2218eeb987ab83cf0c851acd49913700f79983 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 6 Mar 2025 23:45:19 +0800 Subject: [PATCH] update --- Dockerfile | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9f3c589..12112a1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,58 @@ # 构建阶段 FROM node:18-alpine as build-stage +WORKDIR /app + # 设置环境变量 ARG NODE_ENV ENV NODE_ENV=${NODE_ENV} -# 设置工作目录 -WORKDIR /app - -# 设置 npm 淘宝镜像源 -RUN npm config set registry http://mirrors.cloud.tencent.com/npm/ - - -# 复制 package.json 和 package-lock.json (如果存在) +# 复制 package.json 和 package-lock.json COPY package*.json ./ +RUN npm config set registry http://mirrors.cloud.tencent.com/npm/ + # 安装依赖 RUN npm install --production=false -# 复制项目文件 +# 复制源代码 COPY . . -# 构建项目 +# 构建应用 RUN npm run build # 生产阶段 FROM nginx:stable-alpine as production-stage -# 将自定义的 nginx 配置复制到容器中 -COPY nginx.conf /etc/nginx/conf.d/default.conf +# 安装基础工具 +RUN apk add --no-cache bash curl -# 将构建好的文件复制到 nginx 目录 -COPY --from=build-stage /app/dist /usr/share/nginx/html/ +# 创建必要的目录并设置权限 +RUN mkdir -p /var/cache/nginx/client_temp \ + /var/cache/nginx/proxy_temp \ + /var/cache/nginx/fastcgi_temp \ + /var/cache/nginx/uwsgi_temp \ + /var/cache/nginx/scgi_temp \ + && chmod 700 /var/cache/nginx/* \ + && chown -R nginx:nginx /var/cache/nginx + +# 复制 nginx 配置 +COPY nginx.conf /etc/nginx/nginx.conf + +# 从构建阶段复制构建结果 +COPY --from=builder /app/dist /usr/share/nginx/html + +# 修改目录权限 +RUN chown -R nginx:nginx /usr/share/nginx/html \ + && chmod -R 755 /usr/share/nginx/html \ + && chown -R nginx:nginx /var/log/nginx \ + && chmod -R 755 /var/log/nginx \ + && touch /var/run/nginx.pid \ + && chown -R nginx:nginx /var/run/nginx.pid + +# 使用非root用户运行 +USER nginx -# 暴露 80 端口 EXPOSE 80 -# 启动 Nginx CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file