[Rails] Docked Rails - 从 Docker 运行 Rails 以轻松开始开发

Rails 在 GitHub 发布一个新仓库 rails/docked,帮助初学者从 Docker 运行 Rails 以轻松开始开发。

Docked Rails

第一次使用所有必须的依赖来安装 Rails 可能会让初学者望而生畏。Docked Rails 使用 Rails CLI Docker 镜像使其更容易,仅需要安装 Docker。

开始

首先安装 Docker(和 Windows 上的 WSL)。然后复制粘贴以下命令到您的终端:

1
2
3
4
5
6
7
8
9
10
11
12
13
docker volume create ruby-bundle-cache

alias rails='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle ghcr.io/rails/cli'

alias rails-server='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle -p 3000:3000 ghcr.io/rails/cli server -b 0.0.0.0'

alias rails-dev='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle -p 3000:3000 --entrypoint bin/dev ghcr.io/rails/cli'

alias bundle='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle --entrypoint bundle ghcr.io/rails/cli'

alias rake='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle --entrypoint rake ghcr.io/rails/cli'

alias yarn='docker run --rm -it -v $PWD:/rails -v ruby-bundle-cache:/bundle --entrypoint yarn ghcr.io/rails/cli'

然后创建和运行您的 Rails 应用程序:

1
2
3
4
5
6
7
8
9
rails new weblog

cd weblog

rails generate scaffold post title:string body:text

rails db:migrate

rails-server

就这样。您正在 http://localhost:3000/posts 上运行 Rails。

更多

当然您也可以选择进入 Docker 容器去创建和运行您的 Rails 应用程序。(注意 --entrypoint /bin/bash 参数的位置)

1
docker run --rm -it --entrypoint /bin/bash -v $PWD:/rails -v ruby-bundle-cache:/bundle ghcr.io/rails/cli

进入容器后运行以下命令:(注意最后最后一条命令中指定 -b 0.0.0.0 参数)

1
2
3
4
5
6
7
8
9
rails new weblog

cd weblog

rails generate scaffold post title:string body:text

rails db:migrate

rails s -b 0.0.0.0

您可能需要知道的是,在虚拟化的 Linux 环境(如 macOS, Windows)中使用 Docker 容器运行应用,可能会比直接运行同样的应用要慢一些。

参考链接

[1] rails/docked: Running Rails from Docker for easy start to development - https://github.com/rails/docked

[2] Ruby on Rails — A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern. - https://rubyonrails.org/

[3] Package cli - https://github.com/orgs/rails/packages/container/package/cli

[4] Docker run reference | Docker Documentation - https://docs.docker.com/engine/reference/run/#entrypoint-default-command-to-execute-at-runtime