摘要:目前官方已開始推薦使用替代之前的做為基礎(chǔ)鏡像環(huán)境。包括鏡像下載速度加快,鏡像安全性提高,主機(jī)之間的切換更方便,占用更少磁盤空間等。
有了前幾篇的基礎(chǔ)后,我們現(xiàn)在已經(jīng)能
docker 篇:
構(gòu)建 docker 鏡像
上傳私有倉(cāng)庫(kù)
拉取私有鏡像
啟動(dòng)容器
jenkins 篇:
配置 pipeline
觸發(fā) pipeline
接下來就可以結(jié)合兩者,用 jenkins + docker 來自動(dòng)化部署我們的項(xiàng)目。
配置 Jenkinsjenkins 的配置思路為
構(gòu)建機(jī)(IP: xx.xx.xx.xx)拉取代碼
構(gòu)建機(jī)安裝依賴
構(gòu)建機(jī)運(yùn)行測(cè)試
構(gòu)建機(jī)打包并上傳鏡像至私有鏡像倉(cāng)庫(kù)
部署機(jī)(IP: yy.yy.yy.yy)拉取鏡像
部署機(jī)重啟服務(wù)
對(duì)應(yīng) pipeline 配置如下
pipeline { agent any stages { stage("Update") { steps { sh """ npm install """ } } stage("Test") { steps { sh "npm test" } } stage("Build") { steps { sh """ docker build -t localhost:5000/wool-digger-api:$BUILD_NUMBER . docker push localhost:5000/wool-digger-api:$BUILD_NUMBER """ } } stage("Deploy") { steps { sh """ ssh -o stricthostkeychecking=no [email protected] " source /etc/profile docker pull yy.yy.yy.yy:5000/wool-digger-api:$BUILD_NUMBER docker rm -f wool-digger-api docker run -d --name=wool-digger-api --network host yy.yy.yy.yy:5000/wool-digger-api:$BUILD_NUMBER " """ } } } }BULID_NUMBER
在 Build 和 Deploy 環(huán)節(jié)里,使用了 $BUILD_NUMBER 這個(gè)變量來作為鏡像的 tag,這個(gè)變量是 jenkins 的系統(tǒng)變量之一,代表當(dāng)前的構(gòu)建號(hào),每次構(gòu)建這個(gè)號(hào)會(huì)加一,所以可以作為我們鏡像的 tag。其他系統(tǒng)變量可 在此查看。
Network這里使用 docker run 命令的時(shí)候,加入了 --network 參數(shù),這個(gè)參數(shù)用來指定 Docker 容器運(yùn)行的網(wǎng)絡(luò),默認(rèn)為 bridge,即橋接模式。這種模式下在容器內(nèi)通過 localhost 是訪問不到宿主機(jī)的。
如果指定為 host 則容器與宿主機(jī)共用網(wǎng)絡(luò),就無需使用 -p 命令映射端口了。這種模式下會(huì)破話隔離性,這里是為了在容器內(nèi)方便地連接宿主機(jī)的 mysql 和 redis,推薦將 mysql 和 redis 也使用 docker 運(yùn)行,host 值可作為一種臨時(shí)解決方案。
配置 Dockerdocker 的配置無需做太多修改
FROM node:10.15.0-alpine MAINTAINER [email protected] COPY . /app/ WORKDIR /app RUN npm install pm2 -g EXPOSE 1337 CMD ["pm2-runtime", "pm2/production.json"]
這里的基本鏡像使用了 node 的 alpine 版本,alpine 是面向安全的輕型 Linux 發(fā)行版,它的體積非常小。目前 Docker 官方已開始推薦使用 Alpine 替代之前的 Ubuntu 做為基礎(chǔ)鏡像環(huán)境。這樣會(huì)帶來多個(gè)好處。包括鏡像下載速度加快,鏡像安全性提高,主機(jī)之間的切換更方便,占用更少磁盤空間等。
其他 刪除鏡像如果需要批量刪除鏡像,可以使用
docker rmi $(docker images | grep "鏡像名" | awk "{print $3}")持久化日志
如上篇提到的,可以通過 -v 掛載容器內(nèi)日志目錄到宿主機(jī)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28077.html
摘要:如果還沒有搭建好可以使用的,請(qǐng)先移步到這篇文章進(jìn)行搭建使用自動(dòng)部署服務(wù)一搭建篇目標(biāo)通過實(shí)現(xiàn)推送代碼后自動(dòng)部署基于的服務(wù)準(zhǔn)備工作獲取示例項(xiàng)目或者直接復(fù)制以下文件內(nèi)容獲取示例項(xiàng)目項(xiàng)目文件頁(yè)面文件鏡像文件部署文件部署腳本文件頁(yè)面文件項(xiàng)目很簡(jiǎn)單, 如果還沒有搭建好可以使用 Docker 的 Jenkins,請(qǐng)先移步到這篇文章進(jìn)行搭建 使用 Jenkins 自動(dòng)部署 Docker 服務(wù)(一、Je...
摘要:從到到的部署經(jīng)驗(yàn)工作中,除了開發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。同時(shí)在構(gòu)建成功后執(zhí)行我們輸入的命令,來達(dá)到自動(dòng)化部署的工作。缺點(diǎn)也是有的,很難保證對(duì)方部署的環(huán)境是最新的。 從Docker 到Jenkins 到Ansible的部署經(jīng)驗(yàn) 工作中,除了開發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。從傳統(tǒng)的Java ...
摘要:集群環(huán)境的部署方式使用集群管理工具通過版本新增文件實(shí)現(xiàn)滾動(dòng)升級(jí)容器等同于應(yīng)用的部署 1. 思路&流程 Jenkins集成Docker鏡像實(shí)現(xiàn)自動(dòng)發(fā)布與Jenkins發(fā)布mavne項(xiàng)目思路一樣總體流程 為:Jenkins 拉去遠(yuǎn)端源碼 —— gitl實(shí)現(xiàn)應(yīng)用打包 —— jenkins本地把應(yīng)用程序打包進(jìn)Docker鏡像 ...
摘要:什么是可以簡(jiǎn)單地理解為可以代替你實(shí)現(xiàn)自動(dòng)從拉取代碼,打包,部署到遠(yuǎn)程服務(wù)器的工具。隨后登錄后發(fā)現(xiàn)頁(yè)面空白,沒找到具體原因,重啟下容器后再登錄就好了。主要是配置訪問服務(wù)器拉取代碼,還有配置遠(yuǎn)程服務(wù)器地址,目的是為了打包后上傳文件到遠(yuǎn)程服務(wù)器。 showImg(https://segmentfault.com/img/remote/1460000017907307?w=495&h=300)...
摘要:三部署架構(gòu)說明這個(gè)方案僅適用于小公司敏捷項(xiàng)目團(tuán)隊(duì)聯(lián)調(diào)測(cè)試環(huán)境的部署,同時(shí)也可以作為學(xué)習(xí)入門的,并不適用于有一定規(guī)模的生產(chǎn)環(huán)境。另外,建議把測(cè)試域名泛解析到部署這臺(tái)服務(wù)的機(jī)器。模塊配置部署腳本業(yè)務(wù)模塊的配置基本是通過部署腳本來操作的。 項(xiàng)目地址: https://github.com/xiongwilee...基本特性: 快捷部署多人nginx+php的開發(fā)測(cè)試環(huán)境,也可以擴(kuò)展構(gòu)建其...
閱讀 2088·2021-09-29 09:35
閱讀 692·2021-09-08 09:36
閱讀 3400·2021-09-03 10:30
閱讀 2118·2019-08-30 14:21
閱讀 2915·2019-08-30 11:18
閱讀 3319·2019-08-29 17:31
閱讀 3147·2019-08-29 17:29
閱讀 1314·2019-08-29 17:13