Docker實現(xiàn)客戶端無感更新測試-jenkins pipeline流水線版本化發(fā)布更新

1.制作2個jar-srpingboot demo包
這里我分享現(xiàn)成的jar包 

2. 編寫Dockerfile
FROM java:alpine
RUN mkdir -p /app
WORKDIR /app
EXPOSE 8080
ENV LANG en_US.UTF-8
#RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
ADD demo.jar ./demo.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/demo.jar"]

3.構(gòu)建鏡像
docker build -t demo:v1.0 .

4.運行容器
docker container run -dit -p:8080 -m 1G  -e "SPRING_PROFILES_ACTIVE=test" -e "SERVICE_IP=內(nèi)/外網(wǎng)IP" -e "SERVICE_CHECK_HTTP=/actuator/health/" --name demo demo:v1.0 /bin/bash

5.檢測consul注冊服務(wù)情況
image.png
6.瀏覽器輸入域名
輪詢獲取2個jar輸出內(nèi)容
image.png
再刷新就只獲取jar包2 因為jar包1停了 掂恕,那么在jar包1停的時候程序自動更換獲取到j(luò)ar包2的過程并沒有發(fā)生客戶端異常就說明滾動無感更新成功
image.png
nginx配置如下:
upstream demoapi {
     server 127.0.0.1:2365;
     upsync 127.0.0.1:8500/v1/catalog/service/demo upsync_timeout=20m upsync_interval=500ms upsync_type=consul_services strong_dependency=off;
     upsync_dump_path /etc/nginx/servers/www.demo.com.conf;
     check interval=3000 rise=2 fall=5 timeout=10000;
         keepalive 20000;
}
server {
    listen 80;
    server_name demo.xxx.com;
    large_client_header_buffers 4 128k;
    location / {
        client_body_buffer_size 1024k;
        client_max_body_size    0;
        proxy_connect_timeout 300s;
        proxy_send_timeout   900;
        proxy_read_timeout   900;
        proxy_buffer_size    64k;
        proxy_buffers      4 32k;
        proxy_busy_buffers_size 64k;
        proxy_redirect     off;
        proxy_hide_header  Vary;
        proxy_set_header   Accept-Encoding '';
        proxy_set_header   Host   $host;
        proxy_set_header   Referer $http_referer;
        proxy_set_header   Cookie $http_cookie;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_buffering    off;
        proxy_headers_hash_max_size 51200;
        proxy_headers_hash_bucket_size 6400;
        proxy_temp_file_write_size   64k;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_pass http://demoapi/;
    }
}

jenkins pipeline流水線版本化發(fā)布更新 ----后續(xù)可以把打好的包傳到指定多臺服務(wù)器上然后依次主機上去docker run容器 更新發(fā)布從而實現(xiàn)無感發(fā)布更新 -可以通過ansible 或者 shell腳本 或者pipeline自帶


image.png
node {
// 拉取代碼
stage('Prepare Stage') {
echo "1.GIT Prepare Stage"
branches: [[name: '${tag}']]
git branch: 'test', credentialsId: 'xxx-xx-4', url: 'git@git.code.tencent.com:gzlle-biz-api/xxx-xxx.git'
}
// 代碼編譯
stage('Gradle Build') {
sh '''
cd /www/code/imagine-bms/ && git branch -a && git pull && gradle bootJar && 
mv /www/imagine-bms/imagine-bms.jar /www/imagine-bms/imagine-bms.jar.old &&
mv /www/code/imagine-bms/build/libs/imagine-bms-1.0.1.jar /www/imagine-bms/imagine-bms.jar
'''
}
// 項目打包到鏡像并推送到鏡像倉庫
stage('Build and Push Image') {
sh '''
cd /www/imagine-bms/ && pwd
REPOSITORY=10.0.1.15/library/imagine-bms:${tag}
cat > Dockerfile << EOF
FROM 10.0.1.15/library/java:alpine
#RUN apk add -U tzdata
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /app
WORKDIR /app
EXPOSE 7010
ENV LANG en_US.UTF-8
#RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
ADD imagine-bms.jar /app/imagine-bms.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/imagine-bms.jar"]
EOF
docker build -t $REPOSITORY .
docker login 10.0.1.15
docker push $REPOSITORY
'''
}
// 部署到Docker主機
stage('Deploy to Docker') {
sh '''
REPOSITORY=10.0.1.15/library/imagine-bms:${tag}
docker rm -f imagine-bms |true
docker rmi -f 10.0.1.15/library/imagine-bms:v1.0 |true
docker container run -dit -p:7010 -m 1G  -e "SPRING_PROFILES_ACTIVE=test" -e "SERVICE_IP=10.0.1.9" -e "SERVICE_CHECK_HTTP=/actuator/health/" --name imagine-bms $REPOSITORY /bin/bash
'''
}
}
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弛槐,隨后出現(xiàn)的幾起案子懊亡,更是在濱河造成了極大的恐慌,老刑警劉巖乎串,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店枣,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機鸯两,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門闷旧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钧唐,你說我怎么就攤上這事忙灼。” “怎么了钝侠?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵该园,是天一觀的道長。 經(jīng)常有香客問我帅韧,道長里初,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任忽舟,我火速辦了婚禮双妨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叮阅。我一直安慰自己刁品,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布帘饶。 她就那樣靜靜地躺著哑诊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪及刻。 梳的紋絲不亂的頭發(fā)上镀裤,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音缴饭,去河邊找鬼暑劝。 笑死,一個胖子當著我的面吹牛颗搂,可吹牛的內(nèi)容都是我干的担猛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丢氢,長吁一口氣:“原來是場噩夢啊……” “哼傅联!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疚察,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒸走,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后貌嫡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比驻,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡该溯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了别惦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狈茉。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掸掸,靈堂內(nèi)的尸體忽然破棺而出氯庆,到底是詐尸還是另有隱情,我是刑警寧澤猾漫,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布点晴,位于F島的核電站,受9級特大地震影響悯周,放射性物質(zhì)發(fā)生泄漏粒督。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一禽翼、第九天 我趴在偏房一處隱蔽的房頂上張望屠橄。 院中可真熱鬧,春花似錦闰挡、人聲如沸锐墙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溪北。三九已至,卻和暖如春夺脾,著一層夾襖步出監(jiān)牢的瞬間之拨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工咧叭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚀乔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓菲茬,卻偏偏與公主長得像吉挣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子婉弹,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 《Docker環(huán)境下的前后端分離部署與運維》課程腳本 [TOC] 一睬魂、Docker虛擬機常用命令 先更新軟件包yu...
    mingminy閱讀 601評論 0 0
  • 1:下載nginx,我用的是latest版本 docker pull nginx 2:查看pull到本地的ngin...
    szgl_lucifer閱讀 1,524評論 0 1
  • 一 Nginx代理 1.1 Nginx代理概述 nginx是一款自由的蛙粘、開源的、高性能的HTTP服務(wù)器和反向代理服...
    cuixiaoyan閱讀 192評論 0 0
  • 1威彰、mkdir -p /www/logmkdir -p /www/html curl http://mirrors...
    SkTj閱讀 528評論 0 0
  • 1出牧、docker pull nginx docker pull daocloud.io/nginx mkdir -...
    SkTj閱讀 405評論 0 1