Docker 化 Vue2 应用开发

简介: 随着越来越多的项目使用 Vue3 ,前端项目可能面临新旧版本的问题,需要在本地切换 node.js 的版本,甚至出现一些依赖冲突的问题,为了避免这些问题最佳的方式是用 Docker 容器化来隔离每个开发环境。

随着越来越多的项目使用 Vue3 ,前端项目可能面临新旧版本的问题,需要在本地切换 node.js 的版本,甚至出现一些依赖冲突的问题,为了避免这些问题最佳的方式是用 Docker 容器化来隔离每个开发环境。本文将介绍如何使用 Docker 对 Vue2 前端项目进行 Docker 化,用于项目开发过程。

开始之前可以参阅《Docker的优势很容易让Web开发人员所忽略》熟悉并安装 Docker 环境。

进入本文的主题,在项目根目录下增加文件 Dockerfile,代码如下:

FROM node:14.19-alpine3.15
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
# 安装并缓存应用程序依赖项
COPY package.json /app/package.json
RUN npm install
RUN npm install @vue/cli@3.7.0 -g
# start app
CMD ["npm", "run", "serve"]

再增加文件 .dockerignore,内容如下:

node_modules
.git
.gitignore

这将加快 Docker 构建过程,因为本地依赖项和 git repo 不会被发送到 Docker 守护进程。

构建并标记 Docker 映像:

docker build -t vue2-app:dev .

在构建完成后运行容器:

docker run -it -v ${PWD}:/app -v /app/node_modules -p 8080:8080 --rm vue2-app:dev

运行容器命令解释:

  1. docker run 命令从刚刚创建的镜像中创建一个新的容器实例并运行它。
  2. -v ${PWD}:/app 将项目代码挂载到容器中的路径 /app 下。{PWD} 可能无法在 Windows 上运行,需要使用 %cd% 来替代。
  3. 由于要使用容器中的 node_modules 内容,需要挂载另一个路径:-v /app/node_modules,这样安装的依赖就不在本地文件夹 node_modules  中。
  4. -p 8080:8080 将端口 8080 暴露给同一网络上的其他 Docker 容器(用于容器间通信),并将端口 8081 暴露给主机。
  5. --rm 在容器退出后删除容器和卷。
  6. -it :容器的 Shell 映射到当前的 Shell,然后在本机窗口输入的命令,就会传入容器,这样需要终止项目调试只需要 Ctrl+c ,即可退出。

打开浏览器访问 http://localhost:8080,跟在本机调试一样,更改代码自动重新编译并重载(为了避免重载问题,建议映射的端口号和容器暴露的端口号一致)。

如果想使用 Docker Compose,可以在项目根目录下创建文件 docker-compose.yml

version: '3.7'
services:
  vue2-app:
    container_name: vue2-app
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - '.:/app'
      - '/app/node_modules'
    ports:
      - '8080:8080'

如果没有匿名卷/app/node_modulesnode_modules 目录将被运行时主机目录的挂载路径覆盖。换句话说,这会发生:

  • 构建时,将在映像中创建 node_modules 目录。
  • 运行时,当前目录被挂载到容器中,覆盖在构建期间安装的 node_modules

构建镜像并启动容器:

docker-compose up -d --build

正常运行后将可以在浏览器中正常访问并调试。如果需要停止调试或者退出可以执行一下命令:

docker-compose stop

总结

Docker 在WEB开发中还是可以带来很多的便利和好处,在正式的生产环境也可以使用容器化部署,可以将应用进行隔离。


相关文章
|
前端开发 JavaScript 应用服务中间件
【Docker篇】vue前端项目部署
首先打包编译生成一系列的静态文件(dist),然后把这些文件scp(放)到远程部署的服务器中,放完之后配置nginx指向到你存放静态资源的目录,完成nginx指向才能保证请求能访问到相应的资源
777 0
【Docker篇】vue前端项目部署
|
7月前
|
JavaScript 应用服务中间件 nginx
Docker 部署 Vue
在 Docker 中使用 Node 和 Nginx 基础镜像来部署一个 Vue 项目,通常可以按照以下步骤进行。这些步骤涵盖了从构建 Vue 项目到配置 Dockerfile 和 Nginx 的过程。
79 1
|
7月前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
348 4
|
前端开发 JavaScript 小程序
Docker实战 | 第三篇:Docker安装Nginx,实现基于vue-element-admin框架构建的项目线上部署
Docker实战 | 第三篇:Docker安装Nginx,实现基于vue-element-admin框架构建的项目线上部署
|
7月前
|
资源调度 JavaScript 前端开发
如何使用 Docker 来部署 Vue 项目?
【2月更文挑战第8天】
1057 2
|
JavaScript 前端开发 Docker
docker搭建vue自动部署
现在写项目吧,每次都要打包,懒得时候直接在服务器运行开发环境了,这有跟没有生产环境一个样。 因此,为了自己更懒,也借于cvat对react的自动打包,写了一个对vue的自动打包
97 0
|
应用服务中间件 nginx Docker
将 react-typescript + django 部署到 nginx 容器(docker)
将 react-typescript + django 部署到 nginx 容器(docker)
108 0
|
前端开发 应用服务中间件 nginx
docker Compose 部署springboot+vue前端端分离项目
docker Compose 部署springboot+vue前端端分离项目
520 0
|
JavaScript 应用服务中间件 nginx
docker--部署vue项目
docker--部署vue项目
|
资源调度 前端开发 JavaScript
Docker部署前端项目(nuxt)
Docker部署前端项目(nuxt)
646 0
下一篇
DataWorks