Vue项目Docker部署
1. 准备工作
1.1 前提条件
- 已安装Docker
- 已安装Node.js
- Vue项目已开发完成
1.2 项目目录结构
vue-docker-project/
├── Dockerfile
├── .dockerignore
├── nginx.conf
└── vue-project/├── package.json├── src/└── ...
2. Dockerfile编写
2.1 多阶段构建Dockerfile
# 第一阶段:构建Vue项目
FROM node:16 AS build-stage
WORKDIR /app
COPY vue-project/package*.json ./
RUN npm install
COPY vue-project/ .
RUN npm run build# 第二阶段:使用Nginx部署
FROM nginx:alpine
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
2.2 Dockerfile详细解析
- 第一阶段使用Node镜像构建项目
- 第二阶段使用Nginx镜像部署静态文件
- 多阶段构建减小最终镜像体积
3. Nginx配置
3.1 nginx.conf配置
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ /index.html;}# 支持前端路由location ~* \.(?:css|js)$ {expires 1y;access_log off;add_header Cache-Control "public";}
}
3.2 配置说明
- 支持前端路由
- 设置静态资源缓存
- 兼容SPA应用
4. .dockerignore文件
4.1 创建.dockerignore
node_modules
npm-debug.log
build
.dockerignore
Dockerfile
.git
.gitignore
4.2 作用
- 排除不必要文件
- 加快构建过程
- 减小镜像体积
5. 构建与运行
5.1 构建Docker镜像
docker build -t vue-app .
5.2 运行容器
docker run -p 8080:80 vue-app
6. 高级配置
6.1 环境变量
- 可通过
--build-arg
传递环境变量 - 支持多环境配置
6.2 性能优化
- 使用多阶段构建
- 合理配置Nginx缓存
- 选择轻量级基础镜像
7. 常见问题
7.1 跨域问题
- 在Nginx配置中添加跨域头
- 使用反向代理解决跨域
7.2 路由问题
- 确保Nginx配置支持前端路由
- 正确配置
try_files
指令
8. 最佳实践
- 始终使用多阶段构建
- 合理利用Docker缓存
- 定期更新基础镜像
- 关注镜像安全性
结语
Docker部署Vue项目能够提供一致的开发和生产环境,显著简化部署流程。