前言
在进行网站开发的过程中,我们常常需要将代码部署到服务器上,但部署过程却常常被我们忽略。为了简化部署流程,我们可以使用 Docker 来部署网站,而使用 Docker Hub 管理镜像更是比较方便的选择。但我们还需要在每次代码更新时手动拉取 Docker 镜像、重新构建 Docker 容器并重启当前容器并不是一件高效的事情。因此,我们需要一个自动化部署工具。
其中,micro-dockerhub-hook 是一个在 Docker Hub 自动部署 Docker 容器的工具包,可帮助我们自动构建、推送以及部署代码。
本文将从如何安装、配置、以及应用 micro-dockerhub-hook 这个 npm 包等方面,给大家详细介绍 micro-dockerhub-hook 的应用。
安装
首先,我们需要在当前项目中安装 micro-dockerhub-hook,打开控制台(terminal)并输入以下命令:
npm install micro-dockerhub-hook --save
配置
Step 1:填写 Docker Hub token
首先,我们需要在 Docker Hub 中创建一个 Token,以便在 Docker Hub API 上操作镜像。
在创建 Token 前,我们需要在 Docker Hub 上创建一个命名为 webhook 的 Repository,并在其中新建一个名为 latest 的 tag。此处提醒大家,一定要选中自动构建,否则 Docker Hub 将不会生成镜像。
创建结束后,我们进入该 Repository,点击左侧的“构建设置”,在“绑定 Repository的构建来源”中添加对应的 Git Repository。等待自动构建完成后,我们便可以在“镜像标签(Tags)”中看到生成的 latest 镜像。
在创建 Token 前,请确保您已经将 Docker Hub 的账号与要部署的 Repository 绑定。
点击右上角个人头像,进入“安全性”页面,选择“Access Tokens”,在页面中输入密码,点击“Create Access Token” 创建 Token。
Step 2:填写配置文件
我们可以按照以下格式定义配置文件(config.js):
-- -------------------- ---- ------- -------------- - - --------- - --------- ------- ----- ------------ ----- ----- -------- ------- -- ------ ------- --- ------- ----------- ------- --- ------- ----- ------- - - ----- ------------------ ----- -------------------------------- - - -
其中,
protocol
:Docker API 协议(默认为“http”)。host
:你正在使用的 Docker 容器主机名(默认为“localhost”)。port
:Docker API 端口(默认为“2376”)。version
:正在使用的 Docker API 版本(默认为“v1.21”)。token
:你在 Docker Hub 上创建的 Token。webhookUrl
:你在 Docker Hub 上创建的 Webhook 地址。images
:包含要部署的所有 Docker 镜像某些特定的信息。
将具有以上配置选项的配置文件,保存为 config.js。
Step 3:使用 micro-dockerhub-hook
安装和配置 micro-dockerhub-hook 完成之后,我们就可以愉快地部署本地代码了。
在控制台输入以下命令:
var deploy = require('micro-dockerhub-hook'); var config = require('./config'); deploy(config);
你也可以将部署命令分别分成几条语句,像这样:
var deploy = require('micro-dockerhub-hook'); var config = require('./config'); var dockerHub = deploy.createDockerHub(config.token, config.webhookUrl); var buildQueue = deploy.createLocalBuildQueue(dockerHub, config.images); var deployQueue = deploy.createDeployQueue(dockerHub, config.images); var monitorTrigger = deploy.createMonitorTrigger(dockerHub); monitorTrigger.start(buildQueue, deployQueue);
示例代码
在运行代码前,先安装 config.js 依赖:
npm install path shelljs express body-parser --save
然后,我们将具体示例代码存放于 src 文件夹中,具体代码如下:
config.js
-- -------------------- ---- ------- --- ---- - ---------------- -------------- - - --------- - --------- ------- ----- ------------ ----- ----- -------- ------- -- ------ ------- --- ------- ----------- ------- --- ------- ----- ------- - - ----- ------------------ ----- -------------------- ------------- - - -
build.js
var deploy = require('micro-dockerhub-hook'); var config = require('./config'); var dockerHub = deploy.createDockerHub(config.token, config.webhookUrl); var buildQueue = deploy.createLocalBuildQueue(dockerHub, config.images); buildQueue.build();
deploy.js
var deploy = require('micro-dockerhub-hook'); var config = require('./config'); var dockerHub = deploy.createDockerHub(config.token, config.webhookUrl); var deployQueue = deploy.createDeployQueue(dockerHub, config.images); deployQueue.deploy();
index.js
var deploy = require('micro-dockerhub-hook'); var config = require('./config'); var dockerHub = deploy.createDockerHub(config.token, config.webhookUrl); var buildQueue = deploy.createLocalBuildQueue(dockerHub, config.images); var deployQueue = deploy.createDeployQueue(dockerHub, config.images); var monitorTrigger = deploy.createMonitorTrigger(dockerHub, buildQueue, deployQueue); monitorTrigger.start();
此外,你也可以将 deploy 修改为 Web Server,将 deploy 同时部署到多台服务器上。
结语
至此,我们已经为大家详细介绍了如何安装、配置以及使用 npm 包 micro-dockerhub-hook 进行自动化部署的方式与流程,并且附带示例代码。希望大家能在实际工作中很好地应用 micro-dockerhub-hook。
众所周知,自动化部署对于开发者而言既效率又方便,若能掌握自动化部署工具的使用,将免去不少繁琐的工作,从而提高效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d430d0927023822a6c