Docker
是什么?
对于很多前端的同学来说
Docker
会比较陌生,我们平时开发是不会用到这玩意。甚至你不会Docker
也无伤大雅,毕竟Docker
主要是针对后端和运维同学的技术。但是如果你有兴趣的话可以看下本文。而且不会涉及太深的Docker
内容小白也可以快速上手。
在我们平时开发会遇到可能会遇到的几种问题:
- 本地
Node
版本和项目不匹配导致项目运行不起来 - 我本地是好的发到线上就出问题了
- 多个项目时需要用
nvm
来回切换版本 - windows上没问题mac上报错了
以上的几个问题其实就是依赖和环境的问题,这几个问题可能平时遇不到,但是一旦遇到了是真恶心🤮。
而Docker
就是为了解决这些问题而问世的。
Docker
直接将依赖库和环境一起打包成一个镜像。这样就不会再回受到宿主机的影响。
比如说项目A
的Node
版本是14,项目B
的Node
版本是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
的内容制作镜像过程如下:
- 拉取一个
Node:18.16.0
的镜像包, 你的业务代码都会在Node:18.16.0
的环境中运行 - 创建一个工作区
/app
,他可以是任何名字 - 复制
package*.json
文件到工作区 yarn
根据package.json
安装依赖yarn build
打包项目- 暴露项目
devServer
的端口 - 运行
yarn start
启动项目
同Git
一样Docker
也需要一个忽略文件.dockerignore
node_modules
npm-debug.log
build
.dockerignore
**/.git
**/.DS_Store
**/node_modules
然后运行docker build -t <镜像名称> .
这个过程可能比较久,镜像构建成功之后运行docker iamges
查看我们的镜像
创建容器并运行
运行docker run -p 8088:3000 <镜像名称>
命令, 然后在浏览器访问localhost:8088
就可以访问我们的前端项目了