被实验室前端项目整裂开的我想起来还有 docker 这一方法
封面《PARQUET》
前言
运行实验室项目的时候发现有个 node-sass
模块,安装的时候说需要 python2 环境。网上有解决方法是删除 node-modules
,然后安装 windows-build-tools
在重新装依赖。结果我试完发现不行,于是有说法说装最新版的 node-sass
,装完后运行后报错说版本不兼容,直接把我气死。最后我忽然想起来还有 docker
可以使用,因此写下此文,记录将 node 项目 docker 化。
docker 化
Dockerfile
在项目里新建 Dockerfile
文件,写下以下内容。项目中 node-sass
的版本为 4.12.0
,查询 node-sass 推荐的版本为 node 12。此外还可以看到先拷贝 package.json
文件而非全部文件,这是利用 docker
的缓存,减少每次重建镜像的时间,解释见此
1 | FROM node:12 |
运行
运行只需要执行如下命令
1 | docker build . -t <your tag username> |
.dockerignore
有些文件并不需要被加入 docker 镜像中,比如 node_modules
。node_modules
较大且会覆盖镜像中的依赖,因此需要忽略掉。完整.dockerignore
文件见下。
1 | node_modules |
docker-compose.yml
有些时候我们需要将镜像进行服务化,因此需要编写 docker-compoes.yml
文件,在项目目录中新建 docker-compose.yml
文件,编写如下。
1 | version: "3.9" |
有时候需要多个 docker compose
之间通信,此时可以先通过执行 docker network ls
命令来查找网络
1 | # 运行结果 |
如果我想要当前项目与 alsprj_lnmp
处于同一网络环境,就只需在我要连接的 docker-compose.yml
中添加如下代码
1 | networks: |
运行
运行只需要执行如下命令
1 | docker compose up -d |
结果
通过 docker
,实验室前端项目总算跑起来了。
参考资料
把一个 Node.js web 应用程序给 Docker 化