
defradigital/node-developmentdefra-docker-node 是一个Node.js开发父镜像,由DEFRA(英国环境、食品和农村事务部)维护,旨在为Node.js应用开发提供统一的基础开发环境。该镜像集成了标准化的Node.js运行时、开发工具链及配置模板,可作为各类Node.js项目的基础镜像,确保跨项目开发环境一致性,减少重复配置工作。
18-alpine、20-buster等).eslintrc.js、.prettierrc、.gitignore等),支持跨项目配置复用/app作为工作目录),避免权限问题FROM指令扩展功能通过Docker Hub或私有 registry 拉取镜像(具体地址需参考项目文档):
bashdocker pull defra/defra-docker-node:latest # 最新稳定版 # 或指定Node.js版本 docker pull defra/defra-docker-node:20-alpine
在项目Dockerfile中以该镜像为基础构建子镜像:
dockerfile# 从defra-docker-node继承基础环境 FROM defra/defra-docker-node:20-alpine # 设置工作目录(继承自父镜像,默认/app) WORKDIR /app # 复制项目依赖文件并安装依赖 COPY package.json package-lock.json ./ RUN npm ci # 使用package-lock.json安装精确依赖 # 复制项目源代码 COPY . . # 覆盖默认启动命令(根据项目需求调整) CMD ["npm", "run", "dev"]
支持通过环境变量自定义行为,常用变量如下:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
NODE_ENV | 运行环境(development/production) | development |
NPM_REGISTRY | npm镜像源地址 | [***] |
USER_ID | 容器内运行用户ID | 1000(非root用户) |
WORKDIR | 应用工作目录 | /app |
示例:通过环境变量修改npm镜像源
dockerfileFROM defra/defra-docker-node:20-alpine ENV NPM_REGISTRY=[***] RUN npm config set registry $NPM_REGISTRY
在docker-compose.yml中使用该镜像配置开发环境:
yamlversion: '3.8' services: app: build: context: . dockerfile: Dockerfile image: defra/defra-docker-node:20-alpine environment: - NODE_ENV=development - NPM_REGISTRY=[***] volumes: - ./:/app # 挂载本地代码,支持热重载 - node_modules:/app/node_modules # 持久化依赖目录 ports: - "3000:3000" # 映射应用端口 volumes: node_modules: # 定义***卷,避免本地依赖覆盖
如需覆盖父镜像默认配置(如ESLint规则),可在子项目中添加自定义配置文件,子镜像构建时会自动覆盖:
bash# 项目根目录添加自定义.eslintrc.js echo "module.exports = { extends: ['defra', 'prettier'] }" > .eslintrc.js
20-alpine)而非latest,确保版本稳定性root用户执行(可通过USER root切换)volumes挂载代码可实现热重载,但需注意文件权限与容器内用户匹配
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务