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步骤之前安装更多软件包)。
查看此镜像中包含的软件的许可证信息。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务