乐趣区

关于docker:基于Docker在Win10平台搭建Ruby-on-Rails-60框架开发环境

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_170

2020 年,“非驰名 Web 框架”–Ruby on Rails 曾经 15 岁了。在往年,Rails 6.0 趋于欠缺,除了拿掉厌恶的 Jquery,Webpacker 也成为默认前端打包计划,Sprockets 开始软着陆,将来很可能会和 Jquery 一样被彻底废除,这就是历史的过程。

因为历史起因,自身就由 Ruby 撰写的 HomeBrew 在 Mac os 零碎上大行其道,所以大部分 Rails 程序员的主力电脑都是 Mac book pro,而应用 Windows 零碎的用户就没那么好运了,比方 Rails 6.0 开始启用 Webpacker,这就须要用户装置 yarn,由此带来一系列的连锁反应,还有令人失望的 Win10 零碎下的 CoffeeScript 问题,这也是 Rails 包含 Jekyll 时常令人诟病因素之一:搭个环境都这么吃力,我为啥不必 Django、Laravel 亦或者是 Springboot 呢?为什么非得受这份罪呢?因为 ……. 酷爱,本次咱们应用 Docker 来简化 Rails 环境的搭建,让它可能在各个操作系统下做到无缝开发。

当然了,第一步还是装置 Docker,没有装置的敌人请参照:win10 零碎下把玩折腾 DockerToolBox 以及更换国内镜像源 (各种神坑)。

而后在电脑内建设一个 rails 我的项目的目录

mkdir myr  
cd myr

第三步,拉取根底镜像,该镜像内置了 ruby2.5.1 和 node11 为咱们装置 Rails6.0 打好根底

docker pull starefossen/ruby-node

拉取镜像胜利后,启动容器并且进入命令行,记住用挂载命令把当前目录共享到 Docker 容器外部,不会设置共享文件夹的同学能够参照这篇文章:上穷碧落下凡尘:Win10 零碎下基于 Docker 配置 Elasticsearch7 配合 Python3 进行全文检索交互

docker run --rm -v /myr:/usr/src -w /usr/src -ti starefossen/ruby-node /bin/bash

因为在容器外部曾经装置好 ruby2.5.1,所以 gem 也随之装置好,那么咱们能够在容易外部装置 Rails

gem install -v 6.0.2 rails

这里用 - v 参数可管制版本号。

在容器内装置 Rails6.0 胜利之后,间接在容器内建设我的项目

rails new .

我的项目建设好当前,你会发现在 windows 目录会同步呈现 Rails 我的项目文件

此时,在容器命令行内输出 exit 退出容器,此时容器就会进行并且删除,这个容器也实现了它的历史工作,它的存在就是帮咱们创立好一个 Rails 我的项目,并且通过共享文件的模式在宿主机同步。

下一步,为了能在宿主机运行咱们的 Rails 服务,须要一个 Dockerfile 文件来定制咱们本人的镜像

FROM starefossen/ruby-node  
  
# 设置我的项目目录  
WORKDIR /usr/src/app  
  
# 设置配置文件  
COPY Gemfile* ./  
RUN bundle install  
  
# 拷贝文件  
COPY . ./  
  
# 裸露端口  
EXPOSE 3000  
  
# 启动服务命令  
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

写好 Dockerfile 之后,咱们就能够打造一个全新的镜像,这个镜像用来运行咱们曾经建设好的 Rails 我的项目。

docker build -t myr .

打包胜利后,输出命令查看镜像

docker images

此时,启动容器

docker run -p 3000:3000 -v /myr:/usr/src/app/ myr

拜访一下 http://localhost:3000

相熟的“世界人民大团结”欢送页面曾经映入眼帘,就是这么的简略,有人说了,Python 才是现在的“当红炸子鸡”,当初学习 Rails 会不会是“四九年入国军”?我想说的是,时至今年,寰球仍然有超过一亿的网站和后盾服务由 Rails 驱动,其中不乏国内知名企业,如:Airbnb、Basecamp、Github 等,只管 Php 和 Python 的应用范畴比 Ruby 更广,但其最受欢迎的两个框架 Laravel 和 Django 别离比 Rails 的代码贡献者要少很多。更多的开源代码贡献者意味着 Gem 的品质十分之好,俗话说,Gem 为 Rails 倾尽了所有,而 Rails 常常被人们盛赞,也是因为反对它的社区正在致力创立十分多可重用的库。

咱们能够看看在 github 上的开源代码贡献者的数量比照:

GitHub contributors to Ruby frameworks:

Rails: 4260
Padrino: 228
Hanami: 146
Sinatra: 387

GitHub contributors to Django (Python) and Laravel (PHP):

Django: 2,007
Laravel: 740

差距可见一斑,归根结底,一款框架的开发和应用还是得以“人”为本。判若两人,专一 web,专一产品的 Rails6.0 在新的时代里肯定会继往开来、再创辉煌。

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_170

退出移动版