成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

代碼級干貨 | 如何利用Docker與Rails API gem構建微服務

stefanieliang / 2287人閱讀

摘要:今天小數(shù)給大家?guī)淼氖且黄a級干貨文章,與大家分享一些利用以微服務形式設置應用的經(jīng)驗與心得。為何選擇加在我效力的企業(yè)中,我們一直在利用為全部工程師構建開發(fā)環(huán)境。運行命令,從而利用構建鏡像并安裝。

今天小數(shù)給大家?guī)淼氖且黄a級干貨文章,與大家分享一些利用Rails API以微服務形式設置應用的經(jīng)驗與心得。

為何選擇Docker加Rails API?

在我效力的企業(yè)中,我們一直在利用Docker為全部工程師構建開發(fā)環(huán)境。在這種情況下,新人加入后能夠快速擁有與之對應的容器工作環(huán)境。與大多數(shù)長久使用整體應用的企業(yè)一樣,我們同樣希望充分發(fā)揮微服務架構帶來的松散耦合、高緊湊性與獨立部署等固有優(yōu)勢。

我曾經(jīng)利用Rails作為API構建過幾款應用——坦率地講,這種作法有點矯枉過正,因為我們其實沒必要使用其中的全部視圖邏輯與額外中間件。Rails API gem集成于Rails 5版本當中,此版本目前處于beta測試階段。我曾經(jīng)打算利用Docker完成上述工作,但卻在設置過程中遇到了困難,所以在今天的文章中,我將利用Rails 4完成設置并將rails-api gem作為關聯(lián)性添加至Gemfile當中。

大家可能會問,為什么要將Rails API作為微服務架構中的技術堆棧。我認為具體答案取決于技術團隊的實際專長方向。互聯(lián)網(wǎng)上曾經(jīng)就要不要投身微服務以及應該具體使用哪些技術產(chǎn)生過激烈的爭論。可以看到,很多朋友利用Node.js、Go、Scala或者Java等其它卓越技術完成了任務。我曾經(jīng)拿出過一段時間體驗這些方案,也認同它們的出色表現(xiàn),但我所的在團隊更熟悉Rails。因此出于快速開發(fā)的考量,我們做出了這樣的決定。如果非要再選一種潛在方案,我個人更傾向于Node.js,因為我們的很多新應用都以其為基礎構建而成。在我看來,這一轉型項目的最終目標在于確保每項服務都擁有小巧的體積,從而能夠在必要時實現(xiàn)輕松重寫。

從Docker起步 設置工作

今天的教程面向Mac用戶,但大家也可以在Linux發(fā)行版或者Windows平臺上實現(xiàn)類似的操作。首先在終端中為項目創(chuàng)建一個目錄。我將把項目命名為“inventory manager”,但大家也可以隨意選擇自己喜歡的名稱。

接下來在項目root目錄下創(chuàng)建幾個文件。

設置 Dockerfile

Dockerfile負責容納我們Docker容器環(huán)境的全部設置。

那么我們該在文件中添加怎樣的內容?在這里我們利用Ruby的最新版本(2.3.0)創(chuàng)建一套鏡像,而后在該容器上運行apt軟件包管理命令。我們將利用MySQL客戶端庫進行開發(fā)。此后,我們將把本地Gemfile與Gemfile.lock添加至容器的文件系統(tǒng)當中,再安裝其關聯(lián)性。最后,我們將項目目錄內的全部內容添加至容器內。

設置 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格式的響應信息)。

創(chuàng)建Docker鏡像

現(xiàn)在進行Docker鏡像的創(chuàng)建。



運行Docker build命令,從而利用Dockerfile構建鏡像并安裝gem。

Docker鏡像已經(jīng)成功創(chuàng)建完成

一旦Gemfile或者Dockerfile內容出現(xiàn)變更,大家將需要再次運行這條命令以重構Docker鏡像。大家可以利用以下命令查看已經(jīng)創(chuàng)建的鏡像:


創(chuàng)建Rails API應用結構

接下來,我們在Docker鏡像中運行Rails API命令以創(chuàng)建應用結構。在我們的 docker-compose.yml文件內,將“web”作為命令執(zhí)行的目標容器。

創(chuàng)建Rails API應用結構

設置數(shù)據(jù)庫

現(xiàn)在需要對database.yml文件進行設置,完成后即可進行數(shù)據(jù)遷移。

主機為“db”,我們已經(jīng)在docker-compose.yml file文件中定義了該名稱。這一主機值必須與我們在docker-compose.yml文件中定義的數(shù)據(jù)庫容器保持一致。

測試Web應用的運行情況

現(xiàn)在應用結構已經(jīng)構建完成,下面運行Web服務器以檢查能夠正常查看Rails狀態(tài)頁面。



在各自容器中運行數(shù)據(jù)庫與Web應用,而后運行Puma server以監(jiān)聽端口9292

我的docker-machine ip運行在端口192.168.59.100上。大家應確保運行docker-machine ip以找到正確的docker ip(本示例直接使用docker ip作為別名)。

下一步

現(xiàn)在我們的應用已經(jīng)開始正常運行,以此為基礎大家可以隨意創(chuàng)建數(shù)據(jù)模型以及控制器等等。

我們可以通過這種方式創(chuàng)建更多微服務,并確保不同應用之間利用JSON通過http經(jīng)由同一Docker主機的不同web服務器端口實現(xiàn)彼此通信。我們也可以使用消息收發(fā)機制實現(xiàn)不同服務間的通信,例如RabbitMQ。

原文作者:Charles Wang

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/26613.html

相關文章

  • 技術干貨 | 如何規(guī)劃基于Docker服務架構

    摘要:今天小數(shù)又漂洋過海給大家運來一篇干貨,在今天的文章中,我們將一同了解如何在上規(guī)劃一套成功的微服務架構。通過在基于的微服務之前安裝反向代理,輸入的請求可被正確分發(fā)至多主機上的任意數(shù)量容器實例當中。規(guī)劃技巧四安裝反向代理及或管理平臺。 今天小數(shù)又漂洋過海給大家運來一篇干貨,在今天的文章中,我們將一同了解如何在Docker上規(guī)劃一套成功的微服務架構。 Docker的人氣仍然持續(xù)升溫,這主要歸...

    awokezhou 評論0 收藏0
  • Docker 實踐(三):Mac 下構建 Rails 開發(fā)環(huán)境

    摘要:開發(fā),最讓人頭疼的就是環(huán)境問題。所以一直在嘗試做一個可以隨時復用的開發(fā)環(huán)境來。安裝關于下有了最新的解決方案,就是,直接下載安裝就可以了目前尚在版本,但是對于開發(fā)環(huán)境使用足矣。 rails 開發(fā),最讓人頭疼的就是環(huán)境問題。其本身的理念加上某偉大防御工程的幫助,使得每次環(huán)境的配置都的花費很長的時間來解決;同時,與人協(xié)作也有諸多不便。所以一直在嘗試做一個可以隨時復用的開發(fā)環(huán)境來。 1. 安裝...

    馬忠志 評論0 收藏0
  • 干貨下載】谷歌、亞馬遜等十大公司精選服務案例

    摘要:自去年以來,微服務受到了前所未有的關注,眾多的互聯(lián)網(wǎng)巨頭開始實施微服務架構并取得了不錯的反響,話不多說,今天我們就為大家盤點一下谷歌亞馬遜等十大科技公司的微服務實踐案例。 自去年以來,微服務受到了前所未有的關注,眾多的互聯(lián)網(wǎng)巨頭開始實施微服務架構并取得了不錯的反響,話不多說,今天我們就為大家盤點一下谷歌、亞馬遜等十大科技公司的微服務實踐案例。 谷歌 隨著多元化微服務的流行,越來越多的服...

    孫淑建 評論0 收藏0
  • 技術干貨 | 初次服務體驗:從Docker容器農(nóng)場說起

    摘要:或許你的第一次微服務體驗,就從本文開始在本文中,和等紛紛亮相,并配有詳細的代碼說明。該角色與本地網(wǎng)絡及的配置設置相關。由于會在虛擬機初始化過程中自動執(zhí)行配置任務,因此惟一的解決辦法就是將相關內容提取至單獨的劇本當中 這是一篇溫和有趣的技術文章,如果你初識Docker,對微服務充滿興趣,不妨一讀?;蛟S你的第一次微服務體驗,就從本文開始…… 在本文中,Mesos、Zookeeper、Ma...

    魏憲會 評論0 收藏0
  • Docker 實踐(七):提升幸福感

    摘要:對程序員來說,阻礙幸福感最大的因素應該是那個偉大的墻了。所幸國內有或者阿里云這樣的云服務商提供鏡像加速服務,可直接搜索鏡像加速,添加這些服務商提供的地址即可。 對程序員來說,阻礙幸福感最大的因素應該是那個偉大的墻了。 本文對 docker 系統(tǒng)配置過程中,國內使用的一些加速的辦法做一些記錄和總結,希望能給有需要的人帶來微小的幫助。 Docker for mac 下載 Docker fo...

    qingshanli1988 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<