天天看點

Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins

Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔

  • 概述
  • Docker安裝與更新
    • 1. 儲存庫方式安裝docker【[官方推薦](https://docs.docker.com/install/linux/docker-ce/centos/)】
  • 按裝mysql資料庫
  • 安裝jenkins

概述

本文檔所有部署均使用docker鏡像進行部署。

Docker安裝與更新

1. 儲存庫方式安裝docker【官方推薦】

  • 更新 yum 緩存:
    yum makecache fast
  • 解除安裝docker:

    yum remove docker

    docker-client \

    docker-client-latest \

    docker-common \

    docker-latest \

    docker-latest-logrotate \

    docker-logrotate \

    docker-engine

  • 安裝必要工具:

    yum install -y yum-utils

    device-mapper-persistent-data

    lvm2

    1.yum-utils提供了yum-config-manage效用
     2.devicemapper存儲驅動程式則需要device-mapper-persistent-data和lvm2這兩個工具支援
               
  • 設定穩定存儲庫:

    yum-config-manager

    –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    1.國内伺服器 推薦使用阿裡鏡像庫
               
  • 安裝docker-ce:
    yum install docker-ce docker-ce-cli containerd.io
    1.安裝的為最新版本的docker-ce
               
  • 設定開機啟動:

    systemctl start docker

    systemctl enable docker

  • 更新docker:
    參照儲存庫方式按裝docker

按裝mysql資料庫

  • 拉取mysql鏡像
    docker pull mysql
  • 運作mysql容器

    docker run \

    -p :8000:3306

    –name server_mysql

    -v /zoo/mysql/conf:/etc/mysql/conf.d

    -v /zoo/mysql/logs:/logs

    -v /zoo/mysql/data:/var/lib/mysql

    -e MYSQL_ROOT_PASSWORD=123456

    -d mysql

    -p:映射本機8000端口到容器3306端口
      --name:容器名稱 server_mysql
      -v:(配置卷) 映射本機/zoo/mysql/conf目錄到容器/etc/mysql/conf.d容器
      -v:(日志卷) 映射本機/zoo/mysql/logs目錄到容器/logs目标
      -v:(資料卷) 映射本機/zoo/mysql/data目錄到容器/var/lib/mysql目錄
      -e:初始化密碼
      -d:背景運作
      mysql: 使用mysql鏡像
               
  • 登陸mysql容器

    docker exec –it server_mysql bash # 進入容器指令行

    mysql –uroot –p 123456 # 登陸mysql

    現在使用遠端連接配接工具可能失敗: 
      		plugin caching_sha_password could not be loaded
      mysql安全機制緻使首次登陸需重置密碼
      		ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
               
  • 配置阿裡雲安全組規則
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins

安裝jenkins

  • 拉取jenkins鏡像【jenkinsci/blueocean版本】
    docker pull jenkinsci/blueocean
  • 運作jenkins容器
docker run \
  			--rm \
		    -u root \
  			-p 8001:8080 \
  			-d \
			--name server_jenkins\
  			-v /zoo/jenkins:/var/jenkins_home \
  			-v /var/run/docker.sock:/var/run/docker.sock \
  			-v /zoo/project:/home \
  			jenkinsci/blueocean
           
--rm :容器運作退出後自動删除容器
	-d :背景運作(首次不要以背景運作因為要擷取密碼)
	-v:jenkins安裝檔案由本機/zoo/jenkins目錄映射到/var/jenkins_home 目錄
	-v:jenkins部署的項目由本機/zoo/project目錄映射到/home目錄
           
  • 登入jenkins控制台
  1. 擷取初始密碼:

    執行安裝jenkins容器時,複制指令行間多排星号之間字元串。

  2. 初始化jenkins

    浏覽器輸入 伺服器ip:jenkins端口,按照提示操作。

    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
  • Jenkins建立項目:
  1. 建立流水線
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
  2. 流水線配置
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins
  3. 項目Jenkinsfile編寫

    Jenkinsfile檔案在項目的跟目錄中。Jenkinsfile檔案可以定義:

    使用maven參數化打包項目;

    使用docker指令建構鏡像;

    使用dockerfile檔案建構鏡像;

pipeline {
    agent any
    // 環境變量
    environment {
        // 阿裡雲docker倉庫憑證 :這是jenkins管理界面中定義的憑證名稱為“aliyun-docker”
        FRESH_CREDS = credentials('aliyun-docker')
        BUILD_NUMBER = credentials('aliyun-docker')
        // 倉庫docker 位址、鏡像名、容器名稱
        FRESH_HOST = 'registry.cn-hongkong.aliyuncs.com'
        DOCKER_IMAGE = 'meeek/fresh-eureka'
        DOCKER_CONTAINER = 'fresh-eureka'
    }
    stages {
        // 拉取項目 - 使用docker maven打包
        stage('Maven Build') {
            agent {
                docker {
                    image 'maven:3-jdk-8-alpine'
                    // maven倉庫位置映射
                    args '-v /zoo/maven/.m2:/root/.m2'
                }
            }
            // maven打包指令
            steps {
                sh 'mvn -B -DskipTests clean package install'
                echo '-->> -->>maven打包建構完成!'
            }
        }
        // dockerfile建構鏡像 -- 推送到遠端倉庫
        stage('Docker Build') {
            agent any
            steps {
                 script {
                    // 停止并删除清單中有 ${DOCKER_CONTAINER} 的容器
                    def container = sh(returnStdout: true, script: "docker ps -a | grep $DOCKER_CONTAINER | awk '{print \$1}'").trim()
                    if(container.size() > 0){
                        sh "docker ps -a | grep $DOCKER_CONTAINER | awk  '{print \$1}' | xargs docker stop"
                        sh "docker ps -a | grep $DOCKER_CONTAINER | awk '{print \$1}' | xargs docker rm"
                        echo '-->> 1#停止并删除容器 -->>'
                    }
                    // 删除清單中有 ${DOCKER_IMAGE} 的鏡像
                    def image = sh(returnStdout: true, script: "docker images | grep $DOCKER_IMAGE | awk '{print \$3}'").trim()
                    if(image.size() > 0){
                        sh "docker images | grep $DOCKER_IMAGE | awk '{print \$3}' | xargs docker rmi"
                        echo '-->> 2#停止并删除鏡像 -->>'
                    }
                 }
                // 建構鏡像并運作容器
                sh "docker build -t ${DOCKER_IMAGE}:${env.BUILD_ID} ."
                sh "docker run -p 9010:9010 --name ${DOCKER_CONTAINER} -d ${DOCKER_IMAGE}:${env.BUILD_ID}"
                echo '-->> 3#建構成功-->>'
            }
        }
    }
}
           
注意:隻需要更改環境變量中的“DOCKER_IMAGE”, “DOCKER_CONTAINER”,“docker端口号”
           
  1. 項目dockerfile編寫
FROM openjdk:8-jdk
	MAINTAINER Meeek <[email protected]>
	VOLUME /zoo/project/fresh/fresh-eureka
	ADD target/fresh-eureka-1.0-SNAPSHOT.jar app.jar
	RUN bash -c 'touch /app.jar'
	EXPOSE 9010
	ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
           
注意:隻需要更改ADD中的包名稱
           
  1. 運作流水線
    Contos7.X 下使用docker+jenkins+springcloud安裝部署文檔概述Docker安裝與更新按裝mysql資料庫安裝jenkins

繼續閱讀