如何优化 NodeJS 在 Docker 中的构建过程。Docker 是管理容器的重要工具,但其内部工作机制对新手来说可能难以掌握。在处理基础设施时,理解 Docker 的优化变得至关重要。通过实现最佳效率,可以长期节省时间和金钱。
在 Docker 中构建 NodeJS 应用程序通常涉及以下几个步骤:使用正确的 Node 基础镜像、复制源代码、安装依赖、构建/编译源代码、运行过程。通过检查,可以发现最终 Docker 镜像中可以消除两个层级:一旦编译了源代码,“复制源代码”的步骤就变得不相关;开发依赖(devDependencies)仅在开发过程中需要,在生产环境运行过程中不需要。
文章中讨论了多种优化技术,包括:
1. 初始化 Dockerfile:创建一个简单的 Dockerfile 来启动 NodeJS 过程。
2. 使用 `.dockerignore`**:忽略某些文件夹,以显著改变构建时间或大小。
3. 使用 Slim 或 Alpine 镜像:选择更稳定兼容的 Slim 镜像,尽管其减少的镜像大小可能较少。
4. 多阶段构建:改变上下文,仅发送最终阶段,从而复制编译的源代码并完全移除
5. 缓存依赖:通过引入一个名为
6. 清理依赖:移除不再需要的开发依赖,减少最终镜像大小。
实施这些优化技术后,显著改善了构建时间和镜像大小。新构建时间从原来的 106.8 秒减少到 60.6 秒,节省了约 43% 的时间;部分缓存构建时间从 69 秒减少到 18 秒,减少了 73%;完全缓存构建时间仅需 0.9 秒。镜像大小从 2.48GB 减少到 0.51GB,减少了约 79%。然而,尽管这些结果显著,但最终镜像大小对于 API 来说仍然相对较大。总的来说,这是一个漫长且繁琐的过程,需要很长时间才能掌握,对新手来说难以解释,且难以维护。
#Docker
https://www.specfy.io/blog/1-efficient-dockerfile-nodejs-in-7-steps
在 Docker 中构建 NodeJS 应用程序通常涉及以下几个步骤:使用正确的 Node 基础镜像、复制源代码、安装依赖、构建/编译源代码、运行过程。通过检查,可以发现最终 Docker 镜像中可以消除两个层级:一旦编译了源代码,“复制源代码”的步骤就变得不相关;开发依赖(devDependencies)仅在开发过程中需要,在生产环境运行过程中不需要。
文章中讨论了多种优化技术,包括:
1. 初始化 Dockerfile:创建一个简单的 Dockerfile 来启动 NodeJS 过程。
2. 使用 `.dockerignore`**:忽略某些文件夹,以显著改变构建时间或大小。
3. 使用 Slim 或 Alpine 镜像:选择更稳定兼容的 Slim 镜像,尽管其减少的镜像大小可能较少。
4. 多阶段构建:改变上下文,仅发送最终阶段,从而复制编译的源代码并完全移除
node_modules
或部分源代码。5. 缓存依赖:通过引入一个名为
deps
的新阶段,仅复制 package.json
** 文件,有效利用 Docker 的缓存机制。6. 清理依赖:移除不再需要的开发依赖,减少最终镜像大小。
实施这些优化技术后,显著改善了构建时间和镜像大小。新构建时间从原来的 106.8 秒减少到 60.6 秒,节省了约 43% 的时间;部分缓存构建时间从 69 秒减少到 18 秒,减少了 73%;完全缓存构建时间仅需 0.9 秒。镜像大小从 2.48GB 减少到 0.51GB,减少了约 79%。然而,尽管这些结果显著,但最终镜像大小对于 API 来说仍然相对较大。总的来说,这是一个漫长且繁琐的过程,需要很长时间才能掌握,对新手来说难以解释,且难以维护。
#Docker
https://www.specfy.io/blog/1-efficient-dockerfile-nodejs-in-7-steps
Specfy
The complexity of writing an efficient NodeJS Docker image - Specfy
A step by step guide to build fast and lightweight NodeJS docker images.
Docker-OSX 允许用户在 Docker 容器中运行 macOS 虚拟机,实现接近原生的 OSX-KVM 性能。该项目支持 X11 转发,适用于 macOS 安全研究以及持续集成/持续部署(CI/CD)环境,并特别对 iMessage 安全研究提供了便利。
#Tools #Docker
https://github.com/sickcodes/Docker-OSX
#Tools #Docker
https://github.com/sickcodes/Docker-OSX
GitHub
GitHub - sickcodes/Docker-OSX: Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security…
Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers. - sickcodes/Docker-OSX
一篇关于如何管理和减少 Docker 日志文件大小的实用指南。
#Docker #实践
https://levix.notion.site/Docker-Reducing-Docker-Logs-Size-A-Practical-Guide-to-Log-Management-1a2383a7128480e7b1b2d204f4758329?pvs=74
#Docker #实践
https://levix.notion.site/Docker-Reducing-Docker-Logs-Size-A-Practical-Guide-to-Log-Management-1a2383a7128480e7b1b2d204f4758329?pvs=74
levix on Notion
减少 Docker 日志大小: 日志管理实用指南 - Reducing Docker Logs Size: A Practical Guide to Log Management | Notion
一篇关于如何管理和减少 Docker 日志文件大小的实用指南。