前言
1 | Docker镜像体积大带来的问题 |
示例
容器化ReactJS应用程序,优化镜像体积大小
npm安装
1
2
3
4
5
6
7
8
9
10# 下载
https://registry.npmmirror.com/binary.html?path=node/
# 安装
tar -zxvf node-xxx.tar.gz
# 创建软链接
ln - s /opt/node-xxxx/bin/npm /usr/local/bin/npm
ln - s /opt/node-xxxx/bin/node /usr/local/bin/node
ln - s /opt/node-xxxx/bin/npx /usr/local/bin/npx
# 安装yarn
npm install -g yarn #如果安装完执行yarn提示无此命令,在对应安装路径做个yarn的软链接创建项目
1 | # 借助脚手架通过命令行创建React项目 |
- 构建第一个镜像
1 | # 使用node镜像 |
查看已构建镜像
1 | # 可看到镜像体积在1.42GB,很大 |
- 修改基础镜像进行初次优化
1 | # 使用node:14作为基础镜像后制作的镜像体积很大,如基于alpine的node镜像会很大程度上减少镜像体积 |
镜像体积减少到593MB
- 多级构建优化
1 | # 在之前的配置中是将所有源代码也复制到工作目录中,这也增大体积。从发布和运行来看我们只需构建好运行目录即可。引入多级构建以减少不必要的代码和依赖于我们的最终镜像。 |
镜像体积已到128MB
- 使用nginx来运行应用程序
1 | # 使用node服务器运行ReactJS应用程序的静态资源不仅效率低下也造成镜像臃肿。使用nginx这类更轻量服务器来运行应用。 |
镜像体积只有23.7MB!
1 | # 测试应用程序能否启动 |