環(huán)境:
1.ubuntu18
2.docker
3.jenkins
4.gitlab項目
jenkins插件配置
Jenkins要實現(xiàn)持續(xù)集成自動部署需要安裝 :
1.Publish Over SSH
2.gitlab
Git等幾個插件
jenkins上集成gitlab插件
系統(tǒng)配置-->系統(tǒng)配置-->Gitlab
host url填寫gitlab服務(wù)器地址
Credentials配置如下
api token從gitlab 用戶設(shè)置中獲取,如下圖
設(shè)置SSH:Publish over SSH
同時配置服務(wù)器的ssh賬號密碼
設(shè)置jenkins的JDK
一開始使用ubuntu的jdk地址膨桥,報錯 (jdk path) is not a directory on the Jenkins master (but perhaps it exists on some agents)
如果出現(xiàn)以上問題混聊,就需要將本地的jdk掛載到j(luò)enkins容器后重啟
啟動:
-v命令進行掛載,其中冒號前面的是本機的目錄懂拾,將本機的javahome和mavenhome的路徑,掛載到Jenkins容器上,冒號后面是容器上的目錄欲鹏,可以寫跟本機目錄相同屿聋。
docker ps
docker stop 4fe6ce853e7c(CONTAINER ID)
docker run -d --name jenkins_01 -p 8081:8080 -v /usr/lib/jvm/java-8-openjdk-amd64/bin/java:/usr/lib/jvm/java-8-openjdk-amd64/bin/java -v /usr/lib/jvm/java-8-openjdk-amd64:/usr/lib/jvm/java-8-openjdk-amd64 -v /home/jenkins_01:/home/jenkins_01 jenkins:jenkins:latest
或者勾選自動安裝
添加不同的gitlab認證方式
配置git地址
加入maven命令
配置ssh傳輸路徑以及自定義shell腳本
echo "run.sh start..."
docker --version
SERVER_NAME=demo-api1
cd /data/app/
echo "docker build start..."
docker build -t $SERVER_NAME /data/app/demo-api1/
echo "docker build end..."
cid=$(docker ps -a| grep "$SERVER_NAME" | awk '{print $1}')
if [ "$cid" != "" ]; then
docker rm -f $cid
fi
docker run \
-d \#后臺運行
-e TZ="Asia/Shanghai" \ #設(shè)置時區(qū)
-p 8000:8000 \#宿主機器端口與容器端口綁定
-v /data/app/demo-api1/:/home/docker_app/demo-api1/ \#文件夾掛載空扎,前面是宿主服務(wù)器路徑,后面是容器的路徑润讥,兩個路徑下內(nèi)容同步
--name demo-api1 \ #容器名稱
--privileged=true \ #是否擁有特權(quán)
--net=host \#[docker的四種網(wǎng)絡(luò)模式](https://www.cnblogs.com/gispathfinder/p/5871043.html)
java:8 java \ #容器版本:tag
-jar /home/docker_app/demo-api1/demo-api1.jar --spring.profiles.active=pro
#容器啟動后啟動jar
echo "run.sh end..."
Dockerfile
主要用于鏡像在當前目錄上下文查找文件转锈,并將文件同步到鏡像
FROM java:8
EXPOSE 8000
ADD demo-api1.jar /home/docker_app/demo-api1/demo-api.jar
ENTRYPOINT ["java","-jar", "demo-api1.jar"]
啟動成功后查看
docker ps -a