library/rails此镜像已正式弃用,推荐使用标准ruby镜像替代,2016年12月31日后将不再接收任何更新。请相应调整您的使用方式。
对于此镜像的大多数使用场景,Rails实际上并非从此镜像获取,而是从项目的Gemfile中获取。因此,此镜像唯一的"价值"在于预安装了nodejs、mysql-client、postgresql-client和sqlite3,以支持Rails框架的各种使用场景。
例如,以下Dockerfile可作为使用PostgreSQL的Rails项目的良好起点:
dockerfileFROM ruby:2.3 RUN apt-get update \ && apt-get install -y --no-install-recommends \ postgresql-client \ && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/app COPY Gemfile* ./ RUN bundle install COPY . . EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]
Dockerfile链接5.0.1, 5.0, 5, latest (Dockerfile)onbuild (onbuild/Dockerfile)获取帮助:
Docker社区论坛、Docker社区Slack 或 Stack Overflow
提交issue:
[***]
维护者:
Docker社区
已发布镜像详情:
repo-info仓库的repos/rails/目录 (历史记录)
(镜像元数据、传输大小等)
镜像更新:
带有library/rails标签的official-images PRs
official-images仓库的library/rails文件 (历史记录)
本描述的来源:
docs仓库的rails/目录 (历史记录)
支持的Docker版本:
最新版本 (尽最大努力支持低至1.6版本)
Ruby on Rails(简称Rails)是一个开源Web应用框架,运行于Ruby编程语言之上。它是一个全栈框架,意味着"开箱即用"的Rails可以创建从Web服务器收集信息、与数据库交互或查询数据库、以及渲染模板的页面和应用。因此,Rails具有独立于Web服务器的路由系统。
***.org/wiki/Ruby_on_Rails
!logo
DockerfiledockerfileFROM rails:onbuild
将此文件放在应用的根目录下,与Gemfile同级。
此镜像包含多个ONBUILD触发器,可覆盖大多数应用场景。构建过程会执行COPY . /usr/src/app、RUN bundle install、EXPOSE 3000,并将默认命令设置为rails server。
然后可以构建并运行Docker镜像:
console$ docker build -t my-rails-app . $ docker run --name some-rails-app -d my-rails-app
可通过访问[***]测试,若需从主机外部访问,可映射到8080端口:
console$ docker run --name some-rails-app -p 8080:3000 -d my-rails-app
然后在浏览器中访问http://localhost:8080或[***]。
Gemfile.lockonbuild标签需要应用目录中存在Gemfile.lock。以下docker run命令可帮助生成该文件。在应用根目录(与Gemfile同级)中运行:
console$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.1 bundle install
若要生成新Rails项目的脚手架,可执行以下命令:
console$ docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle webapp
这将在当前目录下创建一个名为webapp的子目录。
rails镜像有多种版本,每种版本设计用于特定场景。
rails:<version>这是默认镜像。若不确定需求,建议使用此版本。它既可用作临时容器(挂载源代码并启动容器以运行应用),也可用作构建其他镜像的基础。
rails:onbuild此镜像简化了衍生镜像的构建。对于大多数场景,在项目根目录创建包含FROM rails:onbuild的Dockerfile,即可为项目创建独立镜像。
尽管onbuild变体有助于"快速启动"(短时间内实现Docker化),但不建议在项目中长期使用,因为无法控制ONBUILD触发器的执行时机(另见docker/docker#5714、docker/docker#8240、docker/docker#***)。
一旦熟悉项目在Docker中的运行方式,建议调整Dockerfile以继承非onbuild变体,并将onbuild变体Dockerfile中的命令(将ONBUILD行移至末尾并删除ONBUILD关键字)复制到自己的文件中,以便更好地控制这些步骤,并使Dockerfile的功能对自己和他人更透明。这也便于随着时间推移添加额外需求(例如在执行先前的ONBUILD步骤之前安装更多软件包)。
查看此镜像中包含的软件的许可证信息。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务