自动化集成:Pipeline整合Docker容器
前言:該系列文章,圍繞持續集成:Jenkins+Docker+K8S相關組件,實現自動化管理源碼編譯、打包、鏡像構建、部署等操作;本篇文章主要描述流水線集成Docker用法。
一、背景描述
微服務架構是當前主流的技術選型,在業務具體落地時,會存在很多業務服務,不管是在開發、測試、上線的任意節點中,如果基于手動編譯的方式打包服務,操作成本不僅極高,而且很容易出現紕漏。
通過Pipeline流水線的方式,將服務鏡像構建編排成一鍵觸發執行,實現自動化的管理流程,是微服務架構中的必要的功能模塊。
二、流程設計
本篇中的流程節點,主要針對打包好的應用Jar包,在docker模塊中的處理流程,主要是鏡像構建管理與容器運行:
- 構建docker文件目錄與內容;
- 拷貝Jar包,創建Dockerfile腳本文件;
- 執行docker鏡像構建,推送云倉庫;
- 拉取鏡像文件并運行docker容器;
整個流程的都放在Pipeline流水線中,銜接在本地Jar包生成之后。
三、實現過程
1、插件安裝
首先安裝流程中Docker集成的相關插件:Docker Pipeline,Docker plugin,CloudBees Docker Hub/Registry Notification。
在之前的流水線篇幅中,已經通過流水線完成Gitee倉庫代碼pull和本地打包,下面開始處理docker環節。
2、鏡像構建腳本
關于Dockerfile的腳本語法也可以參考之前docker篇幅,下面看流水線中的用法:
environment {docker_directory = 'docker-app'docker_repository = '倉庫URL'}stage('Dockerfile') {steps {sh '''rm -rf ${docker_directory}mkdir -p ${docker_directory}cp auto-client/target/auto-client-1.0-SNAPSHOT.jar ${docker_directory}/auto-client.jarcd ${docker_directory} cat>Dockerfile<<EOF FROM java:8 MAINTAINER cicadasmile VOLUME /data/docker/logs ADD auto-client.jar application.jar ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"] EOFcat Dockerfile'''echo "create Dockerfile success"}}腳本說明:
- 在流水線的工作空間創建目錄docker-app;
- 每次執行都清空一次docker目錄,再把Jar包和Docker腳本放進去;
- cat-EOF-EOF:即創建Dockerfile文件,并把中間的內容寫入;
- 腳本中的內容必須在文件中頂行寫入;
3、打包推送
這里即進入docker目錄,執行鏡像打包的操作,并把鏡像推送到云端倉庫,很多倉庫都是私有的,需要身份驗證,通過配置憑據去訪問:
stage('DockerImage'){steps {script {dir("${docker_directory}") {sh 'ls'docker.withRegistry("${docker_directory}", '訪問憑據') {docker.build("doc-line-app:latest").push()}}echo "build DockerImage success"}} }4、憑據配置
打開Manage Jenkins界面,Manage Credentials選項;
按如下流程配置即可:
同系列推薦:
- Jenkins管理工具詳解
- Pipeline流水語法詳解
- Docker容器入門簡介
- 服務自動化部署和管理
- 微服務組件二次淺封裝
四、源代碼地址
GitEE·地址 https://gitee.com/cicadasmile/butte-auto-parent Wiki·地址 https://gitee.com/cicadasmile/butte-java-note總結
以上是生活随笔為你收集整理的自动化集成:Pipeline整合Docker容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP JCo的Server/Clien
- 下一篇: one trick pony