使用Docker打包前端静态资源和Nginx,核心是编写Dockerfile将dist文件复制至nginx容器并配置路由;支持单阶段(依赖本地构建)和多阶段(内置Node构建、镜像更小)两种方式。
直接用 Docker 打包
前端
静态资源和 Nginx,核心就是写好一个
Dockerfile
,让 Nginx 容器启动时就自带你的 HTML、JS、CSS 等文件。整个过程不依赖本地 Node 环境,也不需要手动上传文件,镜像构建完就能一键运行。
准备前端构建产物
确保你已有可部署的静态资源目录(通常是
或
)。若还没生成:
进入项目根目录,执行
(如依赖未安装)
运行构建命令:
(Vue/React/Vite 通用)或
(Nuxt 静态站点)
确认产出目录存在,比如
下有
和配套资源
编写最小可用 Dockerfile
在项目根目录(与
同级)新建文件
,内容如下:
是轻量、安全的基础镜像,适合生产使用
把本地构建好的文件复制进容器的默认 Web 目录
是可选但推荐的:解决 SPA 路由刷新 404(加
)、自定义监听端口或 gzip 压缩等
构建并运行镜像
终端执行以下命令:
Docker Sandbox
创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。
下载
立即学习
“
前端免费学习笔记(深入)
”;
—— 构建镜像,
表示当前目录
—— 启动容器,把宿主机 8080 端口映射到容器 80 端口
浏览器访问
即可看到页面
进阶:多阶段构建减小镜像体积
如果希望构建过程也由 Docker 完成(不依赖本地 npm),可改用多阶段写法:
最终镜像不含 Node、源码、node_modules,通常能缩小 70% 以上体积
构建环境与运行环境彻底隔离,更符合生产规范
distbuildnpm installnpm run buildyarn generate./distindex.htmlpackage.jsonDockerfileFROM nginx:alpine
COPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]nginx:alpineCOPY dist/ ...nginx.conftry_files $uri $uri/ /index.html;docker build -t my-frontend ..docker run -d -p 8080:80 --name frontend-app my-frontendhttp://localhost:8080# 构建阶段:用 Node 环境打包
FROM node:16-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
运行阶段:只保留 Nginx 和静态文件
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
