成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

代碼級干貨 | 如何利用Docker與Rails API gem構(gòu)建微服務(wù)

stefanieliang / 2320人閱讀

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

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

為何選擇Docker加Rails API?

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

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

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

從Docker起步 設(shè)置工作

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

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

設(shè)置 Dockerfile

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

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

設(shè)置 docker-compose.yml

我們需要設(shè)置docker-compose.yml文件,從而確保Docker Compose工具能夠?qū)ails API應(yīng)用及我們的MySQL容器間的通信進行編排。

這套配置建立起一套mysql容器,外加一套由Dockerfile構(gòu)建而成的名為web的容器,后者在端口9292上運行Puma webserver。接下來,我們可以將這一Rails應(yīng)用容器連接至mysql容器,從而保證二者能夠彼此通信。

設(shè)置 Gemfile

在Gemfile當(dāng)中,我們將添加Rails gem、Rails API gem、mysql客戶端適配器、Puma webserver以及Active Model Serializers(用于JSON格式的響應(yīng)信息)。

創(chuàng)建Docker鏡像

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



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

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

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


創(chuàng)建Rails API應(yīng)用結(jié)構(gòu)

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

創(chuàng)建Rails API應(yīng)用結(jié)構(gòu)

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

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

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

測試Web應(yīng)用的運行情況

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



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

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

下一步

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

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

原文作者:Charles Wang

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/26613.html

相關(guān)文章

  • 技術(shù)干貨 | 如何規(guī)劃基于Docker服務(wù)架構(gòu)

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

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

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

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

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

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

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

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

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

    qingshanli1988 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<