基于Docker在Win10平臺搭建Ruby on Rails 6.0框架開發環境

原文轉載自「劉悅的技術博客」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項目文件

image

此時,在容器命令行內輸入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
image

此時,啟動容器

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

訪問一下 http://localhost:3000

image

熟悉的“世界人民大團結”歡迎頁面已經映入眼簾,就是這么的簡單,有人說了,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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。