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';
- 配置阿裡雲安全組規則
安裝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控制台
-
擷取初始密碼:
執行安裝jenkins容器時,複制指令行間多排星号之間字元串。
-
初始化jenkins
浏覽器輸入 伺服器ip:jenkins端口,按照提示操作。
- Jenkins建立項目:
- 建立流水線
- 流水線配置
- 項目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端口号”
- 項目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中的包名稱
- 運作流水線