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