File size: 1,357 Bytes
2bc6d22 4d4656a 4def16e 2bc6d22 4def16e 4d4656a 2bc6d22 4def16e 2bc6d22 4d4656a 4def16e 4d4656a 2bc6d22 4d4656a 2bc6d22 4def16e 2bc6d22 4def16e 2bc6d22 4def16e 2bc6d22 4def16e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# 步骤 1: 选择一个包含 Node.js 的基础镜像
FROM node:18-alpine AS builder
# 步骤 2: 设置工作目录
WORKDIR /app
# 步骤 3: 复制 package.json 和 package-lock.json
# 确保这里复制的 package.json 包含了 "serve" 作为生产依赖
COPY package*.json ./
# 步骤 4: 安装 *所有* 依赖 (包括 devDependencies 用于构建)
RUN npm ci
# 步骤 5: 复制项目的所有代码到工作目录
COPY . .
# 步骤 6: 构建项目 (生成静态文件到 dist 目录)
RUN npm run build
# 步骤 7: (优化) 移除开发依赖,减小最终镜像体积
# 因为 'serve' 是生产依赖,所以不会被 prune 命令移除
RUN npm prune --omit=dev
# -------- 运行阶段 --------
# 步骤 8: 暴露端口
# 我们将让 'serve' 监听 4173 端口
EXPOSE 4173
# 步骤 9: 定义容器启动时运行的命令
# 改用 'npx serve' 来托管 'dist' 目录下的静态文件
# -s: 表示单页应用 (SPA) 模式,处理路由回退
# dist: squish 项目构建后输出的目录名 (vite 默认是 dist)
# -l 4173: 指定监听端口,必须和 EXPOSE 及 README.md 中的 app_port 一致
CMD ["npx", "serve", "-s", "dist", "-l", "4173"]
# --- 关于 7860 端口的注释保持不变,如果你需要改端口,记得同步修改 EXPOSE, CMD, 和 README.md ---
# EXPOSE 7860
# CMD ["npx", "serve", "-s", "dist", "-l", "7860"] |