国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

從零搭建docker+jenkins+node.js自動(dòng)化部署環(huán)境的方法

2024-09-01 13:56:31
字體:
供稿:網(wǎng)友

本次案例基于CentOS 7系統(tǒng)

  • 適合有一定docker使用經(jīng)驗(yàn)的人閱讀
  • 適合有一定linux命令使用經(jīng)驗(yàn)的人閱讀

1、docker部分

1.1、docker簡(jiǎn)介

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口

1.2、docker架構(gòu)

簡(jiǎn)單的說,docker就是一個(gè)輕量級(jí)的linux系統(tǒng)。Docker 容器通過 Docker 鏡像來創(chuàng)建。容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類。docker架構(gòu)如圖所示:

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

1.3、docker虛擬機(jī)管理命令

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

1.4、安裝docker

更新軟件庫

yum update -y

安裝docker

yum install docker -y

1.5、啟動(dòng)docker服務(wù)

啟動(dòng)docker服務(wù)

service docker start

其它相關(guān)命令

 service docker restart // 重啟docker服務(wù) service docker stop  // 停止docker服務(wù)

2、node部分

可以通過koa框架隨便寫一個(gè)hello-world項(xiàng)目,然后在項(xiàng)目的根目錄下新建一個(gè)Dockerfile文件

Dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令構(gòu)建一層,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建。

筆者自己的Dockerfile文件配置信息如下,熟悉docker的人可以自行配置

# Dockerfile# 使用node做為鏡像FROM node# 在容器中創(chuàng)建該目錄RUN mkdir -p /home/project# 設(shè)置容器的工作目錄為該目錄WORKDIR /home/project # 向外提供3000端口EXPOSE 3000# 容器創(chuàng)建完成后執(zhí)行的命令CMD npm install --registry=https://registry.npm.taobao.org && node ./start.js

將該項(xiàng)目發(fā)布到github上,為之后的jenkins部署做前提準(zhǔn)備

3、jenkins部分

查詢jenkins鏡像

 docker search jenkins 

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

拉取最新的jenkins鏡像

docker pull jenkins:latest

啟動(dòng)jenkins

sudo docker run -d -u 0 --privileged --name jenkins_node1 -p 49003:8080 -v /root/jenkins_node1:/var/jenkins_home jenkins:latest

命令解析:

  • -u 0

指的是傳入root賬號(hào)ID,覆蓋容器中內(nèi)置的賬號(hào)

  • -v /root/jenkins_node1:/var/jenkins_home

指的是 將docker容器內(nèi)的目錄/var/jenkins_home映射到宿主機(jī) /root/jenkins_node1目錄上

  • --name jenkins_node1

將容器命名為 jenkins_node1

  • -p 49003:8080

端口映射,將容器的8080端口映射到宿主機(jī)的49003端口

  • --privileged

賦予最高權(quán)限

整條命令的意思

運(yùn)行一個(gè)鏡像為jenkins:latest的容器,命名為jenkins_node1,使用root賬號(hào)覆蓋容器中的賬號(hào),賦予最高權(quán)限,將容器的 /var/jenkins_home映射到宿主機(jī)的 /root/jenkins_node1目錄下,映射容器中8080端口到宿主機(jī)49003端口

查看jenkins

執(zhí)行完成后,等待幾十秒,等待jenkins容器啟動(dòng)初始化。

可以查看宿主機(jī) /root/jenkins_node1下是否多了很多文件

到瀏覽器中輸入 localhost:49003 查看jenkins是否啟動(dòng)成功

看到如下界面說明啟動(dòng)成功:

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

獲取密碼

cat /root/jenkins_node1/secrets/initialAdminPassword

復(fù)制輸出的密碼,粘貼到頁面中,點(diǎn)擊continue會(huì)進(jìn)入到下面這個(gè)頁面

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

點(diǎn)擊安裝

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

等待安裝完成,進(jìn)入到創(chuàng)建管理員賬號(hào)界面

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

輸入賬號(hào)密碼信息后點(diǎn)擊保存(信息要填完),來到首頁

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

配置jenkins,進(jìn)入系統(tǒng)管理頁面,管理插件

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

選擇 ssh插件,

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

直接安裝,等待安裝完成,回到首頁,

來到 系統(tǒng)管理 -> 系統(tǒng)配置

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

拖到最下Publish over SSH這

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

選擇高級(jí),輸入服務(wù)器IP,用戶名,密碼,然后點(diǎn)擊 Test Configuration

顯示 Success 則說明配置沒問題。然后保存,回到首頁

新建一個(gè)項(xiàng)目

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

輸入項(xiàng)目名稱

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

選擇源碼管理,使用git管理,輸入github倉庫地址,添加github用戶

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

完成來到選擇構(gòu)建環(huán)境,

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

執(zhí)行的命令

sudo docker stop nodeapp || true / && sudo docker rm nodeapp || true / && cd /root/jenkins_node1/workspace/node / && sudo docker build --rm --no-cache=true -t node - < Dockerfile / && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_node1/workspace/node:/home/project node

保存后,點(diǎn)擊立即構(gòu)建

構(gòu)建成功后,可以在宿主機(jī)的目錄/root/jenkins_node1/workspace/node下看到你的項(xiàng)目文件了

在瀏覽器輸入 docker服務(wù)器地址 localhost:3000 即可訪問到頁面信息

啟動(dòng)失敗的,可以查看日志來確定一下失敗的原因

docker logs nodeapp

4、jenkins + github自動(dòng)部署

如果想本地代碼提交push到github后,jenkins自動(dòng)拉取最新代碼重新部署,請(qǐng)繼續(xù)看

服務(wù)器要外網(wǎng)能訪問,本地環(huán)境想測(cè)試的可以嘗試內(nèi)網(wǎng)穿透 natapp 或者 ngrok

在首頁點(diǎn)擊用戶

首頁 -> 用戶 -> root

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

點(diǎn)擊設(shè)置 -> show API Token

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

復(fù)制API Token 里面的值

返回到首頁 -> node -> 配置 -> 構(gòu)建觸發(fā)器 粘貼到身份驗(yàn)證令牌 中

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

登陸到你的github項(xiàng)目頁面 打開 Setting -> Webhooks -> Add webhooks

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

添加 webhooks

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

修改jenkins的安全策略

jenkins首頁,選擇 系統(tǒng)管理-->Configure Global Security(系統(tǒng)設(shè)置下面那個(gè)) 進(jìn)行如下設(shè)置

docker,jenkins,node.js,自動(dòng)化部署環(huán)境

至此,已完成 git push 后,jenkins 自動(dòng)構(gòu)建自動(dòng)部署。

5、docker的常用命令

對(duì)docker比較感興趣的人可以了解一下,繼續(xù)學(xué)習(xí)

鏡像相關(guān)

查詢鏡像

docker search [name]

拉取鏡像

docker pull [name]

導(dǎo)入鏡像

docker load < /home/node.tar.gz

導(dǎo)出鏡像

docker save > /home/node.tar.gz

查詢所有鏡像

docker images

刪除鏡像

docker rmi [name]

修改鏡像名

docker tag docker.io/node node

容器相關(guān)

啟動(dòng)

# 運(yùn)行并進(jìn)入交互模式docker run -it --name myjava java bash # 在后臺(tái)運(yùn)行docker run -d --name myjava java

端口映射

docker run -it --name myjava -p 9000:8085 -p 9000:8086 java bash

目錄映射

docker run -it --name myjava -v /home/project:/soft --privileged docker.io/node bash

進(jìn)入后臺(tái)運(yùn)行的容器

docker exec -it name bash

自動(dòng)重啟

docker run --restart=always -it --name myjava -p 9000:8085 -p 9000:8086 java bash

暫停容器

docker pause node

停止暫停容器

docker unpause node

停止容器

docker stop node

啟動(dòng)容器

docker start -i node

查看容器

docker ps -a

docker網(wǎng)段相關(guān)

創(chuàng)建網(wǎng)段

docker network create net1

查看網(wǎng)段信息

docker network inspect net1

刪除網(wǎng)段信息

docker network rm net1

6、總結(jié)

筆者自己最近學(xué)習(xí)node,故想嘗試一下通過Docker+jenkins來實(shí)現(xiàn)這個(gè)自動(dòng)化部署的流程,自己踩了一天坑,總算是配置成功了。之前是使用pm2來管理node項(xiàng)目,以及使用pm2來自動(dòng)化部署node項(xiàng)目的,有興趣的可以去看一下。使用pm2自動(dòng)化部署node項(xiàng)目.算是給自己做個(gè)總結(jié)筆記。寫的不好的地方,望指出。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 禹城市| 永兴县| 长子县| 昂仁县| 岑巩县| 临朐县| 全南县| 闽侯县| 特克斯县| 来宾市| 东台市| 垦利县| 兴业县| 商洛市| 丹东市| 迁西县| 临猗县| 金寨县| 镇江市| 会理县| 临清市| 原平市| 龙川县| 赤城县| 蒙城县| 建水县| 阜平县| 铁岭市| 五寨县| 宝坻区| 湖口县| 福安市| 滦平县| 荃湾区| 饶阳县| 秭归县| 鹿泉市| 闸北区| 泸定县| 和林格尔县| 临漳县|