
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/badge/docker-ready-blue.svg](https://hub.docker.com/r/g5search/ruby-base/)
g5search/ruby-base Docker镜像源自官方Ruby镜像。父镜像使用Debian系统,并安装了许多子镜像可能需要的通用(或接近通用)库。
我们为多个Ruby版本维护镜像。版本命名方案为:Ruby主版本/次版本/补丁版本,后跟每个Ruby版本独立的语义化版本(从1.0.0开始),例如2.7.x-v1.0.0、2.6.x-v1.0.3。
为何不直接使用Ruby版本作为镜像标签? 我们大多数Docker镜像发布仅随Ruby版本更新而更新,但偶尔会发布仅更新其他软件(如SSL证书、Postgres驱动程序)的版本。如果Ruby 2.6.3发布时我们有一个标记为
2.6.3的Docker镜像,之后想要发布一个仅升级Node版本的新镜像,该如何标记?不能是2.6.4(Ruby版本仍为2.6.3),也不能是2.6.3.1(不符合语义化版本规范)。2.6.3-v2之类的标记虽可行,但https://semver.org/#backusnaur-form-grammar-for-valid-semver-versions%E6%8C%87%E5%87%BA%EF%BC%8C%60-%60%E5%90%8E%E7%9A%84%E5%86%85%E5%AE%B9%E7%94%A8%E4%BA%8E%E9%A2%84%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%EF%BC%8C%E8%80%8C%E9%9D%9E%E5%90%8E%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%E3%80%82
2.7.X-vX.X.X Ruby 2.7镜像系列。基于ruby27.dockerfile构建,当创建符合2.7.X-vX.X.X命名规范的git标签时触发发布。3.0.X-vX.X.X Ruby 3.0镜像系列。基于ruby30.dockerfile构建,当创建符合3.0.X-vX.X.X命名规范的git标签时触发发布。3.1.X-vX.X.X Ruby 3.1镜像系列。基于ruby31.dockerfile构建,当创建符合3.1.X-vX.X.X命名规范的git标签时触发发布。3.2.X-vX.X.X Ruby 3.2镜像系列。基于ruby32.dockerfile构建,当创建符合3.2.X-vX.X.X命名规范的git标签时触发发布。已退役镜像仍可使用,但不再随Ruby新版本发布更新。建议升级至活跃维护版本。
2.3-vX.X.X Ruby 2.3镜像系列。2023年1月退役2.4-vX.X.X Ruby 2.4镜像系列。2018年退役2.5-vX.X.X Ruby 2.5镜像系列。2019年10月退役2.6-vX.X.X Ruby 2.6镜像系列。2023年1月退役Docker Hub通过自动构建生成镜像,并遵循语义化版本(带有Ruby版本前缀)。例如,可创建2.6.2-v2.0.0-beta.1镜像用于测试即将发布的变更。
创建GitHub发布时需包含变更说明。不同标签的语义化版本相互独立。若Ruby 2.7发布时已有2.6.2-v1.20.0镜像,新镜像的首个版本应为2.7.0-v1.0.0。由于Dockerfile之间存在大量重复内容,更新任何Dockerfile时需确保考虑所有维护版本。
需准备:
复制现有文件(如ruby31.dockerfile)到新Ruby版本,更新FROM ruby:3.1.3为目标版本。可能需要安装系统包或进行其他修改。将文件重命名为Dockerfile(完成后恢复原名)。
Node版本问题
当前镜像基于Node 18构建,但应用仍需Node 14(原因待查)。需指定安装的Node 14版本。Dockerfile中有如下部分:
bash# 安装Node 14和最新NPM nodejs=14.21.3-deb-1nodesource1 && npm install -g npm@latest && \
执行curl -sL https://deb.nodesource.com/setup_14.x | bash -后,可通过apt policy nodejs查看Node 14包名。可构建镜像后通过docker run -it image_name bash进入容器,执行apt policy nodejs获取版本。
Gemfury令牌
若子镜像需从Gemfury安装 gems,需通过构建参数提供令牌(无法从父镜像继承)。Dockerfile中配置如下:
ARG gemfury_token RUN FURY_AUTH=$gemfury_token bundle install
可通过bundle config查找Gemfury令牌。构建命令(替换版本号):
bashdocker build --tag g5search/ruby-base:#.# . --build-arg gemfury_token="yourtoken"
ARM架构(M1)需添加--platform linux/amd64。
确保已执行docker login,然后推送镜像:
bashdocker push g5search/ruby-base:3.0.0-v1.0.0
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务