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

資訊專欄INFORMATION COLUMN

使用docker部署node集群

sunny5541 / 2880人閱讀

摘要:本文會通過三個簡單的,演示如何通過部署集群。首先創(chuàng)建集群然后部署集群查看集群運行情況然后查看容器運行情況可以看到當(dāng)前有個容器在運行,一個容器,五個容器。

本文會通過三個簡單的demo,演示如何通過docker部署node集群。

如果想學(xué)習(xí)docker,官方文檔是一個不錯的入門指引,或者可以看這個gitbook。

一、部署node容器

首先準(zhǔn)備一個node服務(wù)demo,代碼如下:

const Koa = require("koa");
const app = new Koa();

app.use(async ctx => {
    ctx.body = "Hello World";
});

app.listen(8080);

部署node服務(wù)

制作自己的node服務(wù)鏡像,最簡單的方式就是基于已有的node鏡像,在此基礎(chǔ)上,添加自己的內(nèi)容,可以通過Dockerfile描述自己的node鏡像,內(nèi)容如下:

FROM node:8.9.1

# 復(fù)制當(dāng)前代碼到指定目錄下
ADD . /home/app
WORKDIR /home/app
RUN npm install

EXPOSE 8080
CMD ["npm", "run", "dev"]

有了鏡像文件之后,可以通過docker build構(gòu)建鏡像:

docker build -t node-demo .  
# -t 表示定義鏡像名

查看當(dāng)前構(gòu)建的鏡像:

docker images

通過鏡像運行容器:

docker run -d -p 8080:8080 node-demo 
# -d 表示后臺運行

查看運行中容器信息:

docker ps

查看容器運行日志:

docker logs xxx
# xxx 為容器id

暫停容器:

docker container stop xxx

因為鏡像底層是一個linux鏡像,所以可以連接上容器bash:

docker exec -i -t xxx bash

二、部署node、redis服務(wù)

在第一步代碼的基礎(chǔ)上,我們使用node連接一個redis,模擬一個訪客計數(shù)的功能,修改后的node代碼如下:

const Koa = require("koa");
const bluebird = require("bluebird");
const redis = require("redis");
bluebird.promisifyAll(redis.RedisClient.prototype);
bluebird.promisifyAll(redis.Multi.prototype);
const app = new Koa();

// 注意這里的host被指定為 redis,這是docker compose提供的功能
let host = "redis";
let port = "6379";

let client = redis.createClient({
    host,
    port
});

app.use(async ctx => {
    if (ctx.path == "/incr") {
        let num = await client.getAsync("num");
        num++;
        client.set("num", num, redis.print);
        return ctx.body = `num is ${num}`;
    }
    ctx.body = "Hello World";
});

app.listen(8080);

node服務(wù)需要連接redis服務(wù),docker提供了compose工具簡化了容器間通信,要使用compose功能,需要定義描述文件docker-compose.yml:

version: "3"
services:
  web:
    build: .
    ports:
     - "8080:8080"
  redis:
    image: "redis:alpine"

這里描述了兩個容器web和redis,分別對應(yīng)node和redis。

然后通過docker-compose啟動容器,默認如果沒有構(gòu)建鏡像,會先構(gòu)建或者pull鏡像:

docket-compose up -d

查看容器運行情況:

docker-compose ps

暫停容器:

docker-compose stop

三、部署node集群

最后例子是啟動多個node容器,構(gòu)成集群,然后訪問同一個redis:

利用docker提供的實例擴展,其實很容易做到,只要修改docker-compose.yml如下:

version: "3"
services:
  web:
    image: node-demo
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    ports:
     - "8080:8080"
  redis:
    image: "redis:alpine"

唯一的區(qū)別就是添加了deploy聲明,指定是node實例數(shù)量和資源情況。

對于真正的集群部署,docker提供了swarm功能,swarm功能很強大,可以管理跨機器部署,這里就只用到最簡單的實例擴展。

首先創(chuàng)建集群:

docker swarm init

然后部署集群

docker stack deploy -c docker-compose.yml node-swarm

查看集群運行情況

docker service ls

然后查看容器運行情況

docker container ls

可以看到當(dāng)前有6個容器在運行,一個redis容器,五個node容器。

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

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

相關(guān)文章

  • 使用 Docker 快速部署 Elasticsearch 集群

    摘要:本文將使用容器使用編排快速部署集群,可用于開發(fā)環(huán)境單機多實例或生產(chǎn)環(huán)境部署。在集群每一個節(jié)點上執(zhí)行安裝使用安裝重啟服務(wù)驗證分詞默認使用分詞器只能處理英文,中文會被拆分成一個個的漢字,沒有語義。 本文將使用Docker容器(使用docker-compose編排)快速部署Elasticsearch 集群,可用于開發(fā)環(huán)境(單機多實例)或生產(chǎn)環(huán)境部署。 注意,6.x版本已經(jīng)不能通過 -Epat...

    tracymac7 評論0 收藏0
  • 進軍Docker 1.12,將代理與Swarm完美整合

    摘要:其一將用于代理與面向公開的服務(wù)之間的通信。數(shù)據(jù)庫上線并開始運行后,我們接下來部署后端?,F(xiàn)在,會幫助我們完成全部負載均衡工作。這樣所有來自代理的請求都將指向網(wǎng)絡(luò),并由后者跨越全部實例執(zhí)行負載均衡。 七夕大家過得怎么樣?今天數(shù)人云帶大家回歸技術(shù)和干貨。雖然我們能夠在Swarm集群當(dāng)中部署任意數(shù)量的服務(wù),但這并不代表各項服務(wù)全部可為用戶所訪問。而新的Swarm網(wǎng)絡(luò)使得各項服務(wù)之間能夠更為輕松...

    cartoon 評論0 收藏0
  • 基于Docker部署生產(chǎn)環(huán)境Ethereum私鏈集群

    摘要:本項目旨在建立基于部署的生產(chǎn)環(huán)境使用的私鏈集群,在盡可能簡化使用的前提下保留足夠的靈活性,方便業(yè)務(wù)快速組建區(qū)塊鏈私有網(wǎng)絡(luò)集群,并基于此開發(fā)私有區(qū)塊鏈平臺應(yīng)用。因是高性能輕量級的程序,一般啟動一個角色的容器即可。啟動時須指定等命令參數(shù)。 項目地址:https://github.com/tabalt/doc...,歡迎Star和參與完善。 本項目旨在建立基于Docker部署的生產(chǎn)環(huán)境使用的...

    1treeS 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<