基於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同樣被完全廢棄,這就是歷史的進程。node

因爲歷史緣由,自己就由Ruby撰寫的HomeBrew在Mac os系統上大行其道,因此大部分Rails程序員的主力電腦都是Mac book pro,而使用Windows系統的用戶就沒那麼好運了,好比Rails 6.0開始啓用Webpacker,這就須要用戶安裝yarn,由此帶來一系列的連鎖反應,還有使人絕望的Win10系統下的CoffeeScript問題,這也是Rails包括Jekyll時常使人詬病因素之一:搭個環境都這麼費勁,我爲啥不用Django、Laravel亦或者是Springboot呢?爲何非得受這份罪呢?由於.......熱愛,本次咱們使用Docker來簡化Rails環境的搭建,讓它可以在各個操做系統下作到無縫開發。git

固然了,第一步仍是安裝Docker,沒有安裝的朋友請參照:win10系統下把玩折騰DockerToolBox以及更換國內鏡像源(各類神坑)程序員

而後在電腦內創建一個rails項目的目錄github

mkdir myr  
cd myr

第三步,拉取基礎鏡像,該鏡像內置了ruby2.5.1和node11爲咱們安裝Rails6.0打好基礎web

docker pull starefossen/ruby-node

拉取鏡像成功後,啓動容器而且進入命令行,記住用掛載命令把當前目錄共享到Docker容器內部,不會設置共享文件夾的同窗能夠參照這篇文章:上窮碧落下凡塵:Win10系統下基於Docker配置Elasticsearch7配合Python3進行全文檢索交互docker

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

因爲在容器內部已經安裝好ruby2.5.1,因此gem也隨之安裝好,那麼咱們能夠在容易內部安裝Railswindows

gem install -v 6.0.2 rails

這裏用-v參數可控制版本號。ruby

在容器內安裝Rails6.0成功以後,直接在容器內創建項目bash

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

相關文章
相關標籤/搜索