
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
alpinelab/ruby-dev https://img.shields.io/docker/stars/alpinelab/ruby-dev.svg?style=flat-square](https://hub.docker.com/r/alpinelab/ruby-dev/) https://img.shields.io/docker/pulls/alpinelab/ruby-dev.svg?style=flat-square](https://hub.docker.com/r/alpinelab/ruby-dev/)该项目的主要目标是提供一个单一Docker镜像用于开发所有Ruby项目,所有依赖均包含在Docker内部(如gems、NPM包甚至Ruby本身,不会污染主机环境),且镜像中不包含任何项目特定内容(代码库从主机文件系统直接挂载到容器内,因此添加gem或修改代码时无需构建镜像)。
Docker容器还提供开发者友好的工具和行为,如持久化Ruby控制台历史(IRB和Pry)、shell历史,甚至自动安装依赖(只需修改Gemfile或package.json,bundle install或yarn install将自动运行,且仅在必要时执行)。它还提供少量CLI工具:vim、nano、heroku。
默认命令(执行docker-compose up时)是运行foreman start,启动Procfile中定义的服务。所有命令在容器内以代码库所有者(可能是主机用户)身份运行,因此容器内生成的文件(如rails generate、yarn init或日志文件)将归主机用户所有,而非root。
该镜像采用合理默认约定,同时支持配置(如Heroku CLI或Git认证)和自定义(在容器内安装额外软件)。更多详情见使用指南。
TL;DR 🙄
- 代码库双向挂载:主机目录挂载到容器内
/app- [***]
- Bundler配置为将gems存储在
/bundle- https://github.com/rubygems/rubygems%E9%85%8D%E7%BD%AE%E4%B8%BA%E5%B0%86%E7%9B%B4%E6%8E%A5%E5%AE%89%E8%A3%85%E7%9A%84gems%EF%BC%88%60gem install …
)存储在/bundle/global`- 容器内所有操作使用主机用户的UID和GID
bundle install在命令执行前自动运行(仅必要时)yarn install在命令执行前自动运行(仅必要时)- 可通过使用指南自定义镜像,安装额外软件
Gemfile或package.json后,bundle install或yarn install自动运行(仅必要时)root)docker-compose up默认执行foreman start,启动Procfile中定义的服务vim、nano、heroku等CLI工具适用于所有Ruby项目开发,尤其适合需要:
root用户生成文件)在项目根目录创建docker-compose.yml文件,内容如下:
yamlversion: "3" volumes: bundle: { driver: local } # 本地卷驱动,存储Ruby gems node_modules: { driver: local } # 本地卷驱动,存储NPM包 config: { driver: local } # 本地卷驱动,存储配置文件 services: app: image: docker.xuanyuan.run/alpinelab/ruby-dev # 可指定Ruby版本,如alpinelab/ruby-dev:<ruby-version> ports: ["5000:5000"] # 根据项目需求映射端口(如Rails默认3000端口) volumes: - .:/app # 主机当前目录挂载到容器内/app - bundle:/bundle # 挂载bundle卷到容器内/bundle - node_modules:/app/node_modules # 挂载node_modules卷到容器内/app/node_modules - config:/config # 挂载config卷到容器内/config
💡 可使用
alpinelab/ruby-dev:<ruby-version>指定Ruby版本,支持多种版本,详见https://hub.docker.com/r/alpinelab/ruby-dev/tags/
⚠️ 请使用实际应用名称加
-sync后缀(如myapp-sync),避免项目间冲突
安装Docker Sync:gem install docker-sync
创建docker-sync.yml文件:
yamlversion: "3" syncs: your_app-sync: # 替换为实际应用名称-sync(如myapp-sync) src: ./ # 同步主机当前目录 sync_excludes: [log, tmp, .git, .bundle, .idea, node_modules] # 排除无需同步的目录
在docker-compose.yml中添加外部同步卷:
yamlvolumes: your_app-sync: { external: true } # 外部卷,由docker-sync管理
修改docker-compose.yml中的挂载配置,将- ./:/app替换为:
- your_app-sync:/app:nocopy
启动同步:docker-sync start
启动服务
通过以下命令启动项目(默认执行foreman start,启动Procfile中定义的服务):
shelldocker-compose up
执行命令
运行任意命令(如rake、bash等):
shelldocker-compose run app [rake|bash|...]
💡 无需在命令前添加
bundle exec前缀(如直接执行docker-compose run app rake db:migrate)
绕过依赖检查
如需跳过命令执行前的依赖检查(bundle install/yarn install),可通过命令行覆盖入口点:
shelldocker-compose run --entrypoint=bypass app bash # 直接启动bash,不检查依赖
如需安装额外软件,可基于此镜像构建自定义镜像:
在项目根目录创建Dockerfile:
DockerfileFROM docker.xuanyuan.run/alpinelab/ruby-dev # 基于alpinelab/ruby-dev构建 # 安装额外APT包(示例:安装curl) RUN apt-get update \ && apt-get install --assume-yes --no-install-recommends --no-install-suggests \ curl \ # 替换为所需软件包 && rm -rf /var/lib/apt/lists/* # 清理APT缓存,减小镜像体积
修改docker-compose.yml,使用自定义构建镜像:
yamlservices: app: build: . # 替换image字段为build: .,从当前目录Dockerfile构建 # 其他配置(ports、volumes等)保持不变
ℹ️ 临时安装软件(如调试):可在容器内直接执行
apt-get update && apt-get install <软件包>
root所有的node_modules目录,这是由于Docker创建挂载点时的默认行为。未来将通过配置Yarn使用绝对路径存储模块解决(详见https://github.com/alpinelab/docker-ruby-dev/issues/1%EF%BC%89%E3%80%82以下Ruby版本已停止维护:
DockerHub上仍有这些版本的镜像标签,但Git仓库中相关分支已移除,不再自动构建新镜像,视为过时版本。
欢迎通过https://github.com/alpinelab/docker-ruby-dev/pulls%E6%88%96https://github.com/alpinelab/docker-ruby-dev/issues%E8%B4%A1%E7%8C%AE%E4%BB%A3%E7%A0%81%E6%88%96%E5%8F%8D%E9%A6%88%E9%97%AE%E9%A2%98 ❤️
项目提供便捷脚本:
本项目由Alpine Lab开发,基于MIT许可证开源。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务