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