From 9115427e8e99c556fab3acd93ae95d77d675399d Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 6 Mar 2025 23:39:50 +0800 Subject: [PATCH] update --- Dockerfile | 60 +++++++++++++++++------------------------------------- 1 file changed, 19 insertions(+), 41 deletions(-) diff --git a/Dockerfile b/Dockerfile index f221f38..9f3c589 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,62 +1,40 @@ # 构建阶段 -FROM node:16 AS builder - -WORKDIR /app +FROM node:18-alpine as build-stage # 设置环境变量 ARG NODE_ENV ENV NODE_ENV=${NODE_ENV} -# 复制 package.json 和 package-lock.json -COPY package*.json ./ +# 设置工作目录 +WORKDIR /app +# 设置 npm 淘宝镜像源 RUN npm config set registry http://mirrors.cloud.tencent.com/npm/ -# 安装依赖 -RUN npm install && npm install @vue/cli-service --save-dev -# 复制源代码 +# 复制 package.json 和 package-lock.json (如果存在) +COPY package*.json ./ + +# 安装依赖 +RUN npm install --production=false + +# 复制项目文件 COPY . . -# 构建应用 +# 构建项目 RUN npm run build # 生产阶段 -FROM nginx:stable-alpine +FROM nginx:stable-alpine as production-stage -# 安装基础工具 -RUN apk add --no-cache bash curl +# 将自定义的 nginx 配置复制到容器中 +COPY nginx.conf /etc/nginx/conf.d/default.conf -# 创建必要的目录并设置权限 -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 +# 将构建好的文件复制到 nginx 目录 +COPY --from=build-stage /app/dist /usr/share/nginx/html/ +# 暴露 80 端口 EXPOSE 80 -# 健康检查 -HEALTHCHECK --interval=30s --timeout=3s \ - CMD curl -f http://localhost/ || exit 1 - +# 启动 Nginx CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file