基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

简介: 2023年,“非著名Web框架”--Ruby on Rails已经18岁了。在今年,Rails 6.0趋于完善,除了拿掉讨厌的Jquery,Webpacker 也成为默认前端打包方案,Sprockets 开始软着陆,未来很可能会和Jquery一样被彻底废弃,这就是历史的进程。

2023年,“非著名Web框架”--Ruby on Rails已经18岁了。在今年,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在新的时代里一定会继往开来、再创辉煌。

相关文章
|
13天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
54 5
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
215 16
|
9月前
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
249 7
深入理解Docker:为你的爬虫项目提供隔离环境
|
5月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
293 18
|
4月前
|
弹性计算 关系型数据库 Nacos
低配阿里云 ECS 如何 docker 环境部署 NACOS : 单机版模式
NACOS 单机版 Docker 安装指南。使用指定端口和 custom.env 配置文件启动 Nacos 服务,适用于 2.X 版本,包含 gRPC 支持及 MySQL 数据源配置。 -e MODE=standalone \
355 5
|
5月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
至此,这次神秘而简明的部署之旅告一段落。祝你在利用RabbitMQ打造消息队列时,一切顺风顺水!
210 8
|
4月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
102 0
|
5月前
|
Ubuntu 机器人 开发者
Docker环境下的ROS Noetic:Ubuntu 20.04 系统下的解决方案
这就是在Docker环境下安装ROS Noetic在Ubuntu 20.04系统的一种简单方法,希望能对你有所帮助。
562 16
|
7月前
|
人工智能 IDE 开发工具
JetBrains RubyMine 2025.1 发布 - 最智能的 Ruby 与 Rails IDE
JetBrains RubyMine 2025.1 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE
174 30
JetBrains RubyMine 2025.1 发布 - 最智能的 Ruby 与 Rails IDE