
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
defra-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镜像源地址 | https://registry.npmjs.org |
USER_ID | 容器内运行用户ID | 1000(非root用户) |
WORKDIR | 应用工作目录 | /app |
示例:通过环境变量修改npm镜像源
dockerfileFROM defra/defra-docker-node:20-alpine ENV NPM_REGISTRY=https://registry.npm.taobao.org 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=https://registry.npmjs.org 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挂载代码可实现热重载,但需注意文件权限与容器内用户匹配您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务