摘要:今天小數給大家帶來的是一篇代碼級干貨文章,與大家分享一些利用以微服務形式設置應用的經驗與心得。為何選擇加在我效力的企業中,我們一直在利用為全部工程師構建開發環境。運行命令,從而利用構建鏡像并安裝。
為何選擇Docker加Rails API?今天小數給大家帶來的是一篇代碼級干貨文章,與大家分享一些利用Rails API以微服務形式設置應用的經驗與心得。
在我效力的企業中,我們一直在利用Docker為全部工程師構建開發環境。在這種情況下,新人加入后能夠快速擁有與之對應的容器工作環境。與大多數長久使用整體應用的企業一樣,我們同樣希望充分發揮微服務架構帶來的松散耦合、高緊湊性與獨立部署等固有優勢。
我曾經利用Rails作為API構建過幾款應用——坦率地講,這種作法有點矯枉過正,因為我們其實沒必要使用其中的全部視圖邏輯與額外中間件。Rails API gem集成于Rails 5版本當中,此版本目前處于beta測試階段。我曾經打算利用Docker完成上述工作,但卻在設置過程中遇到了困難,所以在今天的文章中,我將利用Rails 4完成設置并將rails-api gem作為關聯性添加至Gemfile當中。
大家可能會問,為什么要將Rails API作為微服務架構中的技術堆棧。我認為具體答案取決于技術團隊的實際專長方向?;ヂ摼W上曾經就要不要投身微服務以及應該具體使用哪些技術產生過激烈的爭論??梢钥吹?,很多朋友利用Node.js、Go、Scala或者Java等其它卓越技術完成了任務。我曾經拿出過一段時間體驗這些方案,也認同它們的出色表現,但我所的在團隊更熟悉Rails。因此出于快速開發的考量,我們做出了這樣的決定。如果非要再選一種潛在方案,我個人更傾向于Node.js,因為我們的很多新應用都以其為基礎構建而成。在我看來,這一轉型項目的最終目標在于確保每項服務都擁有小巧的體積,從而能夠在必要時實現輕松重寫。
從Docker起步 設置工作今天的教程面向Mac用戶,但大家也可以在Linux發行版或者Windows平臺上實現類似的操作。首先在終端中為項目創建一個目錄。我將把項目命名為“inventory manager”,但大家也可以隨意選擇自己喜歡的名稱。
接下來在項目root目錄下創建幾個文件。
設置 DockerfileDockerfile負責容納我們Docker容器環境的全部設置。
那么我們該在文件中添加怎樣的內容?在這里我們利用Ruby的最新版本(2.3.0)創建一套鏡像,而后在該容器上運行apt軟件包管理命令。我們將利用MySQL客戶端庫進行開發。此后,我們將把本地Gemfile與Gemfile.lock添加至容器的文件系統當中,再安裝其關聯性。最后,我們將項目目錄內的全部內容添加至容器內。
設置 docker-compose.yml我們需要設置docker-compose.yml文件,從而確保Docker Compose工具能夠對Rails API應用及我們的MySQL容器間的通信進行編排。
這套配置建立起一套mysql容器,外加一套由Dockerfile構建而成的名為web的容器,后者在端口9292上運行Puma webserver。接下來,我們可以將這一Rails應用容器連接至mysql容器,從而保證二者能夠彼此通信。
設置 Gemfile在Gemfile當中,我們將添加Rails gem、Rails API gem、mysql客戶端適配器、Puma webserver以及Active Model Serializers(用于JSON格式的響應信息)。
創建Docker鏡像現在進行Docker鏡像的創建。
運行Docker build命令,從而利用Dockerfile構建鏡像并安裝gem。
Docker鏡像已經成功創建完成
一旦Gemfile或者Dockerfile內容出現變更,大家將需要再次運行這條命令以重構Docker鏡像。大家可以利用以下命令查看已經創建的鏡像:
接下來,我們在Docker鏡像中運行Rails API命令以創建應用結構。在我們的 docker-compose.yml文件內,將“web”作為命令執行的目標容器。
創建Rails API應用結構
現在需要對database.yml文件進行設置,完成后即可進行數據遷移。
主機為“db”,我們已經在docker-compose.yml file文件中定義了該名稱。這一主機值必須與我們在docker-compose.yml文件中定義的數據庫容器保持一致。
測試Web應用的運行情況現在應用結構已經構建完成,下面運行Web服務器以檢查能夠正常查看Rails狀態頁面。
在各自容器中運行數據庫與Web應用,而后運行Puma server以監聽端口9292
我的docker-machine ip運行在端口192.168.59.100上。大家應確保運行docker-machine ip以找到正確的docker ip(本示例直接使用docker ip作為別名)。
下一步現在我們的應用已經開始正常運行,以此為基礎大家可以隨意創建數據模型以及控制器等等。
我們可以通過這種方式創建更多微服務,并確保不同應用之間利用JSON通過http經由同一Docker主機的不同web服務器端口實現彼此通信。我們也可以使用消息收發機制實現不同服務間的通信,例如RabbitMQ。
原文作者:Charles Wang
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26613.html
摘要:今天小數又漂洋過海給大家運來一篇干貨,在今天的文章中,我們將一同了解如何在上規劃一套成功的微服務架構。通過在基于的微服務之前安裝反向代理,輸入的請求可被正確分發至多主機上的任意數量容器實例當中。規劃技巧四安裝反向代理及或管理平臺。 今天小數又漂洋過海給大家運來一篇干貨,在今天的文章中,我們將一同了解如何在Docker上規劃一套成功的微服務架構。 Docker的人氣仍然持續升溫,這主要歸...
摘要:開發,最讓人頭疼的就是環境問題。所以一直在嘗試做一個可以隨時復用的開發環境來。安裝關于下有了最新的解決方案,就是,直接下載安裝就可以了目前尚在版本,但是對于開發環境使用足矣。 rails 開發,最讓人頭疼的就是環境問題。其本身的理念加上某偉大防御工程的幫助,使得每次環境的配置都的花費很長的時間來解決;同時,與人協作也有諸多不便。所以一直在嘗試做一個可以隨時復用的開發環境來。 1. 安裝...
摘要:自去年以來,微服務受到了前所未有的關注,眾多的互聯網巨頭開始實施微服務架構并取得了不錯的反響,話不多說,今天我們就為大家盤點一下谷歌亞馬遜等十大科技公司的微服務實踐案例。 自去年以來,微服務受到了前所未有的關注,眾多的互聯網巨頭開始實施微服務架構并取得了不錯的反響,話不多說,今天我們就為大家盤點一下谷歌、亞馬遜等十大科技公司的微服務實踐案例。 谷歌 隨著多元化微服務的流行,越來越多的服...
摘要:或許你的第一次微服務體驗,就從本文開始在本文中,和等紛紛亮相,并配有詳細的代碼說明。該角色與本地網絡及的配置設置相關。由于會在虛擬機初始化過程中自動執行配置任務,因此惟一的解決辦法就是將相關內容提取至單獨的劇本當中 這是一篇溫和有趣的技術文章,如果你初識Docker,對微服務充滿興趣,不妨一讀。或許你的第一次微服務體驗,就從本文開始…… 在本文中,Mesos、Zookeeper、Ma...
摘要:對程序員來說,阻礙幸福感最大的因素應該是那個偉大的墻了。所幸國內有或者阿里云這樣的云服務商提供鏡像加速服務,可直接搜索鏡像加速,添加這些服務商提供的地址即可。 對程序員來說,阻礙幸福感最大的因素應該是那個偉大的墻了。 本文對 docker 系統配置過程中,國內使用的一些加速的辦法做一些記錄和總結,希望能給有需要的人帶來微小的幫助。 Docker for mac 下載 Docker fo...
閱讀 1760·2021-09-27 14:02
閱讀 3162·2021-09-27 13:36
閱讀 1055·2019-08-30 12:46
閱讀 1842·2019-08-30 10:51
閱讀 3580·2019-08-29 17:02
閱讀 951·2019-08-29 16:38
閱讀 1854·2019-08-29 16:37
閱讀 3028·2019-08-26 10:32