Sign inSign up

dragonzw/builder-nodejs

By dragonzw

Updated 6 months ago

用于 Jenkins-Agent 中的 PodTemplate 使用,内置 NodeJS 的应用。

Image
0

1.6K

dragonzw/builder-nodejs repository overview

核心结论

dragonzw/builder-nodejs 是**dragonzw/builder-base 镜像的 Node.js 专项版本**,其核心作用是封装一个 定制化的 Node.js 构建基础环境,提供预安装的 Node.js 运行时、包管理工具与系统优化,用于作为“父镜像”快速构建 Node.js 应用的容器镜像(如安装依赖、编译代码、打包静态资源、生成最小化镜像)。

关键依据(来自对话中的“builder-base 镜像”信息)

在之前的对话中,dragonzw/builder-base 镜像的定义明确提到:

  • 它是一个定制化的构建基础镜像,预安装Node.js 工具npm/yarn,用于包管理)、版本控制工具git,用于拉取代码)、辅助工具curl/wgetjq)等;
  • 典型使用场景是作为父镜像构建 Node.js 应用镜像(如通过 Dockerfile 继承 builder-base,用 npm install 安装依赖)。

而**builder-nodejs** 是**builder-base 的细分**,将“Node.js 构建”的能力独立封装,更聚焦 Node.js 开发者的需求。

dragonzw/builder-nodejs 的具体功能(推断)

基于“builder-base 的 Node.js 相关配置”和“Node.js 构建的常规需求”,builder-nodejs 镜像应包含以下核心功能:

1. Node.js 基础环境
  • 预安装特定版本的 Node.js 运行时(如 Node.js 16、18、20,标签可能标注版本,如 node-20);
  • 设置NODE_HOME(Node.js 安装目录)、PATH(包含 node/npm 路径)等环境变量;
  • 集成包管理工具npmyarn,预配置国内镜像源如 https://registry.npmmirror.com,加速依赖下载);
  • 可选集成Node 版本管理器nvm),支持多版本 Node.js 切换。
2. 构建工具集
  • 预安装Node.js 编译依赖(如 python3makeg++,用于编译原生模块);
  • 集成版本控制工具git,用于拉取 Node.js 项目源码);
  • 包含辅助工具curl/wget 下载资源、jq 处理 JSON、tar 压缩产物);
  • 可选集成进程管理工具pm2,用于生产环境运行 Node.js 服务)。
3. 系统优化
  • 基于轻量级基础镜像(如 alpine:3.19ubuntu:22.04),体积精简(通常 < 200MB);
  • 预配置时区TZ=Asia/Shanghai)、语言编码LANG=C.UTF-8);
  • 清理冗余文件(如缓存、文档),减小镜像体积。
4. 容器化友好设计
  • 暴露构建端口(如 3000,用于测试 Node.js 服务);
  • 提供数据持久化目录(如 /app/node_modules 存储依赖、/app 存储源码);
  • 非 root 用户运行构建(如 node 用户),提升安全性。
典型使用场景

dragonzw/builder-nodejs 的核心价值是简化 Node.js 应用的容器化构建流程,适用于以下场景:

1. 作为父镜像构建 Node.js 应用

通过 Dockerfile 继承 builder-nodejs,直接安装依赖、编译代码并生成镜像(无需重复安装 Node.js/npm):

# 继承 builder-nodejs 镜像(假设标签为 node-20-npm)
FROM dragonzw/builder-nodejs:node-20-npm  
# 复制 Node.js 项目源码到容器
COPY ./src /app  
# 切换到源码目录
WORKDIR /app  
# 用预安装的 npm 安装依赖
RUN npm install  
# 编译代码(如 React/Vue 项目的 build 命令)
RUN npm run build  
# 设置容器启动命令(用 pm2 运行服务)
CMD ["pm2", "start", "dist/server.js", "--no-daemon"]  
2. 统一团队 Node.js 构建环境

团队内所有成员使用同一 builder-nodejs 镜像,避免因本地 Node.js 版本、npm 源、依赖差异导致的“构建不一致”问题。

3. CI/CD 流水线集成

在 Jenkins、GitLab CI 等流水线中,用 builder-nodejs 作为构建节点镜像,快速完成 Node.js 项目的依赖安装、测试(如 npm test)、打包(如生成静态文件)。

注意事项
  1. builder-base 的关系
    builder-nodejsbuilder-baseNode.js 专项子集,功能更聚焦(仅保留 Node.js 相关工具),体积更小。若需构建多语言应用(如同时包含 Node.js 和 Java),仍可使用 builder-base

  2. 非官方镜像的风险
    该镜像由个人(dragonzw)维护,稳定性、安全性不如官方 Node.js 镜像(如 node:20-alpinenode:18-slim)。生产环境建议优先使用官方 Node.js 镜像基于官方镜像自行定制(如添加团队常用依赖)。

  3. 版本兼容性
    镜像标签(Tag)通常对应Node.js 版本(如 node-20)、npm/yarn 版本(如 npm-10)和基础系统版本(如 alpine-3.19),需确认与目标应用的兼容性(如 Node.js 项目是否支持该版本)。

总结

dragonzw/builder-nodejs 是一个定制化的 Node.js 构建基础镜像,核心价值是将“Node.js 运行时+包管理工具+系统优化”打包为标准化环境,作为“父镜像”快速构建 Node.js 应用镜像。其定位适合Node.js 开发者简化构建流程、团队统一构建环境、CI/CD 流水线集成,是 builder-base 镜像的 Node.js 专项延伸。

Tag summary

Content type

Image

Digest

sha256:1aa72f3f0

Size

835.7 MB

Last updated

6 months ago

docker pull dragonzw/builder-nodejs