
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Instructure 开源基础 Docker 镜像是一套用于构建语言基础镜像及其 Web 服务器(Passenger)对应版本的基础镜像集合。该镜像通过模板化系统实现多版本镜像的统一管理与构建,旨在为 Instructure 相关应用的开发、部署提供标准化的底层环境支持,简化多语言版本、多配置场景下的基础镜像维护流程。
template 目录)统一管理镜像构建配置,支持批量生成不同版本的基础镜像,减少重复开发工作。manifest 文件中的 versions 对象定义各语言版本的构建参数,每个对象对应特定语言的版本目录(如 ruby/3.1、python/3.9),实现多版本并行维护。defaults 全局默认配置与 versions 版本特定配置的自动合并,优先使用版本配置覆盖默认配置,提升配置复用性和灵活性。rake 命令工具,可将 template 目录的配置修改自动同步到所有版本的构建目录,确保各版本镜像配置一致性。manifest 中指定的模板文件注入 version(版本号)和 generation_message(生成信息)变量,确保镜像构建元数据可追溯。rake 命令)、Docker、Git。ruby、python),每个目录下含 template 模板目录、manifest 配置文件及版本目录(如 3.1、3.2)。1. 修改模板文件
根据需求调整目标语言的模板配置(以 Ruby 为例):
bash# 进入 Ruby 语言的模板目录 cd ruby/template # 编辑 Dockerfile 模板(添加新依赖或配置) vim Dockerfile.template
2. 配置 manifest 文件
manifest 文件(位于语言目录根目录,如 ruby/manifest.json)定义构建参数,格式示例:
json{ "defaults": { "base_image": "ubuntu:22.04", "packages": ["curl", "git"] }, "versions": { "3.1": { "ruby_version": "3.1.4", "packages": ["curl", "git", "nodejs"] }, "3.2": { "ruby_version": "3.2.2", "packages": ["curl", "git", "nodejs", "yarn"] } }, "templates": ["Dockerfile.template", "config/passenger.conf.template"] }
defaults:全局默认配置(如基础镜像版本、通用依赖包),所有版本共享。versions:版本特定配置,键为版本号(如 3.1),值为该版本的个性化参数(如语言版本、额外依赖),可覆盖 defaults 中同名配置。templates:需注入变量的模板文件列表(支持相对路径)。3. 传播模板更改
运行 rake 命令将 template 目录的修改同步到所有版本的构建目录:
bash# 在项目根目录执行 rake
该命令会根据 manifest 配置,将 template 目录下的文件渲染到对应版本目录(如 ruby/3.1、ruby/3.2),并自动注入 version 和 generation_message 变量。
4. 构建镜像
以 Ruby 3.1 版本为例,进入版本目录执行构建:
bashcd ruby/3.1 docker build -t instructure/ruby-base:3.1 .
manifest 文件参数
| 参数名 | 说明 |
|---|---|
defaults | 全局默认配置,所有版本共享,如 base_image: "ubuntu:22.04" |
versions | 版本配置集合,键为版本号(如 3.1),值为该版本的个性化配置 |
templates | 需要注入变量的模板文件路径列表(相对 template 目录) |
模板文件变量
模板文件中可使用以下自动注入的变量:
version:当前版本号(从 versions 对象的键获取,如 3.1)。generation_message:镜像生成元信息(默认包含生成时间、构建主机等,可自定义)。bash# 1. 克隆项目代码 git clone <项目仓库地址> cd instructure-base-images/ruby # 2. 修改模板配置(如需) vim template/Dockerfile.template # 3. 传播更改到版本目录 rake # 4. 构建镜像 cd 3.2 docker build -t instructure/ruby-base:3.2 . # 5. 验证镜像 docker run --rm docker.xuanyuan.run/instructure/ruby-base:3.2 ruby -v # 输出 Ruby 3.2.2
在项目根目录创建 docker-compose.yml:
yamlversion: '3.8' services: ruby-3.1: build: ./ruby/3.1 image: docker.xuanyuan.run/instructure/ruby-base:3.1 ruby-3.2: build: ./ruby/3.2 image: docker.xuanyuan.run/instructure/ruby-base:3.2 python-3.9: build: ./python/3.9 image: docker.xuanyuan.run/instructure/python-base:3.9
执行批量构建:
bashdocker-compose build
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务