[toc]java
聽說流行的微服務和docker一塊兒,更配哦!接下來,使用簡單spring-boot項目演示docker的集成化部署的案例,在看過微笑的博客以爲不過癮,本身動手,下面的方案與Devops的方式比較接近;但願搭建理解這種思路。linux
push
到git服務器
觸發器
收到通知maven的docker插件
)借鑑圖片git
Github路徑:spring-boot_docker_demospring
說明:這裏使用com.spotify的docker-maven-plugin的插件;用法參閱代碼註釋。docker
wget --no-cookies \
--no-check-certificate \
--header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz \
-O jdk-8-linux-x64.tar.gz
複製代碼
tar -zxvf jdk-8-linux-x64.tar.gz
mv jdk-8-linux-x64.tar.gz /usr/local
複製代碼
export JAVA_HOME=/usr/local/jdk1.8.0_181/
export PATH=$PATH:$JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_181/
export JRE_HOME=$JAVA_HOME/jre #tomcat須要
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
複製代碼
source /etc/profile #刷新環境變量
2.1.3.2.3 Linux下Manven安裝
複製代碼
wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
複製代碼
tar -zxvf apache-maven-3.5.0-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/maven/apache-maven-3.5.4
複製代碼
export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH #注意這裏添加$MAVEN_HOME/bin
複製代碼
source /etc/profile #刷新環境變量
複製代碼
Jenkins安裝有三種方式apache
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
複製代碼
在官網下載,放入Tomcat的目錄中便可;打war,你們確定十分熟悉的操做。tomcat
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
複製代碼
yum install jenkins
複製代碼
vi /etc/sysconfig/jenkins
複製代碼
可避免避免和
Tomcat
端口重複的問題springboot
service jenkins start
複製代碼
基本按照推薦來 bash
![]()
說明這裏其實
git
非必須,以前的插件安裝中安裝了服務器
語法請自行查閱資料,這裏使用groovy的語法
#!groovy
pipeline{
agent any
environment {
REPOSITORY="https://gitee.com/will-we/spring-boot_docker_demo.git"
}
tools {
maven 'm3'
jdk 'java8'
}
stages {
stage('獲取代碼'){
steps {
echo "start fetch code from git:${REPOSITORY}"
//清空當前目錄
deleteDir()
//拉去代碼
git "${REPOSITORY}"
}
}
stage('代碼靜態檢查'){
steps {
//僞代碼檢查
echo "start code check"
}
}
stage('編譯+單元測試'){
steps {
echo "start compile"
//切換目錄
sh 'mvn -Dmaven.test.skip=true -U clean install'
}
}
stage('構建鏡像'){
steps {
echo "start build image"
//build鏡像
sh 'mvn clean package docker:build'
}
}
}
}
複製代碼
# 最好添加--name參數
docker run --name= springboot/spring-boot_docker_demo -p 8081:8080 -t srping-demo
複製代碼
本身試着摸着石頭過河,只能藉助搜索引擎了;以下是解決的流程:
1) 安裝Pipeline Maven Integration插件
上面安裝了插件後依舊很差使,繼續找緣由吧,Maven not found in Jenkins【StackOverflow】有着這個題問題:緣由以下:
The reason is that Jenkins is installed and run as a ‚system user‘ service. This means the process can‘t see the ENV variables and PATH of your user (user level). Setting up maven in PATH and ENV variables on system level makes the trick.
大致意思是:jekins的沒法讀取系統的環境變量;因而分別查看了大體的服務器和jekins的變量。 Jenkins 服務器/bin/bash
3) Jenkins導入java和maven的權限
還記得以前配置Jdk和maven的「全局工具設置」,注意:這裏設置也是依舊不能直接讀取,須要以下方式引入;「m3」是配置時名稱,「java8」也是配置名稱。
tools {
maven 'm3'
jdk 'java8'
}
複製代碼
#方式一:參看端口8080信息
netstat -lnp | grep 8080
#方式二:參看端口8080信息
lsof -i :808
#殺死進程
kill -9 pid號
複製代碼
咱們使用了一個簡單的
spring-boot
項目部署到遠程服務器的操做流程,從而實現了推送代碼到Git遠程倉庫,使用jekins的集成化構建docker實現,自動化部署方式。
演示spring-boot的簡單部署方式,其實該項目的還有不少地方優化,例如:
doker push
docker的倉庫、使用Jenkins
的觸發器git hook
等;以及後期;spring-boot的多模塊、以及docker compose
的使用等。因爲篇幅的緣由可能放在了後面的文章。
參考資料
================================================================================
================================================================================