用Docker容器技术部署前端项目(React/Vue)

740 阅读3分钟

Docker是什么?

对于很多前端的同学来说Docker会比较陌生,我们平时开发是不会用到这玩意。甚至你不会Docker也无伤大雅,毕竟Docker主要是针对后端和运维同学的技术。但是如果你有兴趣的话可以看下本文。而且不会涉及太深的Docker内容小白也可以快速上手。

在我们平时开发会遇到可能会遇到的几种问题:

  1. 本地Node版本和项目不匹配导致项目运行不起来
  2. 我本地是好的发到线上就出问题了
  3. 多个项目时需要用nvm来回切换版本
  4. windows上没问题mac上报错了

以上的几个问题其实就是依赖和环境的问题,这几个问题可能平时遇不到,但是一旦遇到了是真恶心🤮。

Docker就是为了解决这些问题而问世的。

Docker直接将依赖库和环境一起打包成一个镜像。这样就不会再回受到宿主机的影响。

比如说项目ANode版本是14,项目BNode版本是16。Docker会分别打包一个Node14的镜像和Node16的镜像,而且这两个镜像是完全独立的不会受到任何影响。

引用官方的描述:

Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。

安装Docker Desktop

根据你的操作系统戳这里

Docker镜像

Docker会读取你的Dockerfile生成镜像, 这个镜像里面包含了你的业务代码和环境依赖。

制作Dockerfile

首先,在我们项目根目录新建一个Dockerfile内容如下

# 使用基础的Node.js镜像
FROM node:18.16.0

# 设置工作目录
WORKDIR /app

# 复制package.json和package-lock.json文件到工作目录
COPY package*.json ./

# 安装项目依赖
RUN yarn

# 复制项目文件到工作目录
COPY . .
# 如果你不需要ts类型校验的的话可以注释掉
RUN tsc

# 构建项目
ENV NODE_ENV production
RUN yarn build


# 暴露React应用程序的默认端口
EXPOSE 3000

# 启动应用程序
CMD ["yarn", "start"]

RUN 后面代码和我们平时在终端中运行一模一样

Docker会根据Dockerfile的内容制作镜像过程如下:

  1. 拉取一个Node:18.16.0的镜像包, 你的业务代码都会在Node:18.16.0的环境中运行
  2. 创建一个工作区/app,他可以是任何名字
  3. 复制package*.json文件到工作区
  4. yarn 根据package.json安装依赖
  5. yarn build打包项目
  6. 暴露项目devServer的端口
  7. 运行yarn start启动项目

Git一样Docker也需要一个忽略文件.dockerignore

node_modules
npm-debug.log
build
.dockerignore
**/.git
**/.DS_Store
**/node_modules

然后运行docker build -t <镜像名称> .这个过程可能比较久,镜像构建成功之后运行docker iamges查看我们的镜像

image.png

创建容器并运行

运行docker run -p 8088:3000 <镜像名称>命令, 然后在浏览器访问localhost:8088就可以访问我们的前端项目了