目錄
- 一.開發Springbot應用
- 二.配置docker
- 三.配置Jenkins
一.開發Springbot應用
新建多個環境的配置文件

bootstrap.yaml

通過變量獲取不同環境active
bootstrap-dev.yml

bootstrap-pre.yaml

預發布及生產環境配置文件走nacos
二.配置docker
新增Dockerfile文件

Dockerfile內容
# Docker image for springboot file run # VERSION 0.0.1 # Author: eangulee # 基礎鏡像使用java FROM openjdk:8 # 作者 MAINTAINER qql <[email protected]> # VOLUME 指定了臨時文件目錄為/tmp。 # 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,并鏈接到容器的/tmp VOLUME /tmp # 設置時區 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 將jar包添加到容器中并更名為app.jar ARG JAR_FILE ADD target/cdc-0.0.1-SNAPSHOT.jar /app.jar #替換成你項目打包后的文件名稱 #配置項目端口 EXPOSE 8020 # 運行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=${env}"] #通過變量傳遞不同的環境
在服務器項目下新增docker-composer.yaml文件 ,不要放在代碼版本庫
version: '3'
services:
project-demo:
container_name: cdcd-demo #自定義容器名稱
image: qql/cdcd:0.0.1 #鏡像名稱
restart: always
environment:
env: dev #環境,不同環境使用不同環境名稱
volumes:
# 同步時間
- /etc/localtime:/etc/localtime:ro
# 如果項目有些日志或者寫文件,需要同步到宿主機器,也需要定義相應的卷
# - ./data:/etc/project-demo/data
# - ./log:/etc/project-demo/log
ports:
- 8080:8020
三.配置Jenkins



新增部署shell腳本

#!/bin/bash
echo "當前位置"
pwd
mvn clean package -Dmaven.test.skip=true
#切換到項目目錄
cd cdc
pwd
#獲取最新版本tag
LatestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
echo -e "最新版本tag......"
echo -e "$LatestTag"
echo -e "鏡像地址"
#獲取本機IP
local_ip=`ifconfig eth0 | grep 'inet' | awk '{print $2}' | sed -e "s/addr\://"`
echo ${local_ip}
#制作docker鏡像
docker build -f Dockerfile -t qql/cdc:1.0 .
echo "制作成功"
cd ../docker
pwd
#根據docker-composer.yaml文件新建獲取重新構建docker容器
docker-compose -f docker-composer.yaml -p cdc up -d
step=1 #間隔的秒數,不能大于60
content=""
for (( i = 0; i < 60; i=(i+step) )); do
status_code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} 127.0.0.1:8080/index/index) #訪問服務一個接口驗證容器是否啟動
echo $status_code
if [ $status_code != 200 ]; then
sleep $step
echo "服務還沒有啟動,耗時"$i"秒"
else
echo "服務已經啟動,耗時"$i"秒"
break
fi
if [ $i == 59 ]; then
echo "啟動失敗"
exit -1
fi
done
{
docker rmi `docker images | grep none | awk '{print $3}'` && /
} || {
echo 'delete null images error(不需要處理)'
}
保存,則就可以執行部署








