翻譯:瘋狂的技術宅
前端
做者:Sergey Kravchenko
git
來源:mediumgithub
正文共:1099 字docker
預計閱讀時間:5 分鐘數據庫
微服務已成爲在 Node.js 中構建可擴展且強大的雲應用的主流方法。同時也存在一些門檻,其中一些難點須要你在如下方面作出決策:
npm
組織項目結構。json
將自定義服務鏈接到第三方服務(數據庫,消息代理等)ubuntu
處理微服務之間共享的代碼。bash
將項目容器化。服務器
在本地運行和調試,而後將其部署到雲中。
SMF 框架是開箱即用的解決方案:
https://github.com/krawa76/smf
讓咱們看看它如何幫你建立和部署微服務原型而無需編寫任何代碼。
安裝框架,建立一個新項目並 cd 到項目目錄:
1$ npm install -g sokyra-microservice-factory2$ smf new test-stack3$ cd test-stack複製代碼
帶有演示服務的樣板代碼已生成,咱們能夠輕鬆地運行該項目:
1$ smf up複製代碼
這將生成 Docker工件(docker-compose 和環境變量文件),構建映像並在本地運行容器:
若是在編輯器中打開項目,則會看到帶有 main.ts
模塊的自動生成的 demo
服務,該服務在上面的日誌中生成了記錄。其餘的重要文件是 smf-stack.json
(項目配置),smf-env.json
(容器 env 變量),通用的 Dockerfile 和 smf-docker.yml
(docker-compose):
要中止項目,請運行
1$ smf down複製代碼
讓咱們添加一項服務,該服務能夠經過消息代理髮送和接收消息,並將某些內容保存到數據庫中:
1$ smf add service service1複製代碼
選擇 RabbitMQ
和 MongoDB
,而後輸入 「0」 退出菜單:
這將在 main 模塊中建立新的帶有樣板代碼的 service 子文件夾:
讓咱們再次運行該項目查看其運行狀況:
1$ smf up複製代碼
如今咱們有 4 個容器在運行:RabbitMQ、MongoDB、demo 和 service1。後者經過 RabbitMQ 發送接收消息,並將模擬數據保存到 MongoDB:
能夠再次使用 smf down
命令中止該項目。
咱們能夠相似地添加更多服務,若是選擇相同的消息代理服務,它們都會經過消息中心交換消息。
將咱們的項目部署到安裝了 Docker 和 Docker-Compose 的遠程服務器上很容易。若是你尚未,請按照如下簡單說明在 Amazon AWS EC2 中建立它:
https://github.com/krawa76/smf/blob/master/README-provisioner.md
還須要 Docker Hub 賬戶。若是丟失,你能夠在這裏免費註冊:
https://hub.docker.com/
在編輯器中打開 smf-deploy.json
文件,並填寫 Docker Hub 登陸名及密碼、主機地址和遠程計算機 SSH 憑據(ssh密鑰路徑)。
運行如下命令部署項目:
1$ smf deploy複製代碼
當該過程結束時,咱們能夠 ssh 到遠程機器,並查看在那裏運行的微服務:
1$ ssh -i "/Users/me/.ssh/aws-key.pem" ubuntu@ec2-x-x-x-x.compute1.amazonaws.com$ docker ps2(gives the list of services)$ docker logs -f test-stack-service13(give the live log)複製代碼
如今,咱們在雲中有了容器化微服務棧的有效原型。
開始添加更多邏輯。因爲每一個服務都是一個單獨的NPM軟件包,所以咱們能夠進入到 service 文件夾,安裝其餘軟件包,在main.ts
模塊中編寫模式代碼,添加新的 JavaScript 模塊,等等:
1$ cd services/service12$ npm install ...複製代碼
編碼愉快!
歡迎關注前端公衆號:前端先鋒,一塊兒走上前端"沙雕"之路。