簡單使用docker stack /swarm 替代docker-compose進(jìn)行部署

PS:小白最近剛使用docker進(jìn)行tomcat的項目部署铣缠,后面學(xué)習(xí)使用docker-compose谚咬,再后面看到docker stack啟動docker-compose鹦付,技術(shù)迭代的過程真的很有意思,下面講述一下具體我的tomcat項目部署的配置择卦、方法和思路(個人的部署方案敲长,等學(xué)到其他技術(shù)打算再升級部署方案)。

1秉继、項目分析

(1)我的tomcat項目有配置文件祈噪,首先我要把配置文件使用docker config create命令(從文件或STDIN創(chuàng)建配置文件作為內(nèi)容)創(chuàng)建配置文件在docker swarm 容器管理中使用,避免每次上傳都要修改配置文件
(2)我的tomcat項目有上傳目錄尚辑,我必須要把上傳目錄掛載到外部使用辑鲤,不然部署新版本重新啟動容器我的上傳文件都被清除了
(3)數(shù)據(jù)庫也要掛載到外部文件夾,也是同樣的問題杠茬,重新部署mysql的時候避免數(shù)據(jù)丟失

搞清楚我的目的后月褥,開始部署工作

2弛随、首先我們先把war包打成tomcat啟動的鏡像(安裝docker很簡單,上網(wǎng)查一下很多的)

docker pull tomcat  //默認(rèn)下載最新的tomcat版本宁赤,你也可以指定tomcat版本
image.png
  • 我的文件目錄
image.png
  • 創(chuàng)建打包的工具類 build-image.sh
#!/bin/bash
# usage:
# ./build-image 
mkdir $1 //創(chuàng)建一個版本文件夾
mv $2 $1/   //把war包移到版本文件夾下保存起來作數(shù)據(jù)備份舀透,有問題可以翻出來檢查
cp Dockerfile $1/    //把外部的Dockerfile移進(jìn)來作數(shù)據(jù)備份,有問題可以翻出來檢查
cd $1  //進(jìn)入版本文件夾
unzip $2 -d blackberry  //解壓war包
docker build -t black-web:$1 .    //然后在文件夾里面進(jìn)行鏡像構(gòu)建

啟動的腳本命令先賦予腳本權(quán)限

chmod u+x build-image.sh

再執(zhí)行命令

./build-image.sh 1.0.1 blackberry.war (代表腳本的2個參數(shù),1.0.1代表版本號决左,可以是1.0.2愕够,1.0.3,blackberry.war代表我的項目war包)

主要是以后怕有問題可以翻看資料佛猛,所以自己做了數(shù)據(jù)備份

  • 創(chuàng)建Dockerfile
FROM tomcat:last
RUN rm -rf /usr/local/tomcat/webapps  //清除容器webapps的所有文件
RUN mkdir -p /usr/local/tomcat/webapps/blackberry //創(chuàng)建新的文件夾
COPY ./blackberry /usr/local/tomcat/webapps/blackberry //將宿主機(jī)的war解壓出來的文件拷貝到容器中

3链烈、編輯docker-compose.yml

version: '3.7'

services:

  fl_mysql:
    restart: always
    image: mysql:5.7.22
    ports:
      - 33306:3306   //自己使用的開放外部端口測試用,正式上線環(huán)境建議開個白名單挚躯,就不要暴露端口了
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: root
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes:
      - ./fl-mysql:/var/lib/mysql  //掛載本地目錄
      - /etc/localtime:/etc/localtime:ro

  fl_tomcat:
    image: black-web:1.0.1  //剛剛上面打包的鏡像
    configs:
      - source: black-config   //這個要使用docker config create 創(chuàng)建外部配置文件,下面有介紹
        target: /usr/local/tomcat/webapps/blackberry/WEB-INF/classes/config/application.yml  //替換掉配置文件
    depends_on:
      - fl_mysql  //代表先運(yùn)行mysql鏡像
    volumes:
      - black-web:/usr/local/tomcat/webapps/blackberry  //將項目掛載到外部文件目錄,下面有介紹
      - /home/docker/black-userfiles:/usr/local/tomcat/webapps/blackberry/userfiles  //將上傳的文件夾掛載到外部目錄
      - /etc/localtime:/etc/localtime:ro

  nginx:
    image: nginx
    depends_on:
      - fl_tomcat
    ports:
      - 8773:8773
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf  //將nginx.conf掛載到外部目錄
      - ./nginx/conf.d:/etc/nginx/conf.d //將conf.d 掛載到外部目錄
      - ./nginx/www:/www //將www 掛載到外部目錄,自己的目錄結(jié)構(gòu)强衡,你想怎樣掛載你有你的想法
      - /etc/localtime:/etc/localtime:ro

configs:
  black-config:
    external: true

volumes:
  black-web:
    external: true

  • docker config create創(chuàng)建配置文件
image.png

主要在docker swarm 容器管理中使用

docker swarm init
docker config create black-config /home/docker/black-config/application.yml 
  • docker volume create black-web

命令創(chuàng)建目錄,默認(rèn)路徑在/var/lib/docker/volumes/black-web/_data",可以自行查看

  • nginx配置我只修改了nginx/conf.d的default.conf
server {
  listen  8773;  //監(jiān)聽8773端口
  server_name fl_tomcat; 

  location /blackberry {
    proxy_pass    http://fl_tomcat:8080/blackberry;   //容器名稱:端口號/包名稱
    proxy_set_header  Host $host:8773;  /
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Client-Verify SUCCESS;
    proxy_set_header  X-Client-DN $ssl_client_s_dn;
    proxy_set_header  X-SSL-Subject $ssl_client_s_dn;
    proxy_set_header  X-SSL-Issuer $ssl_client_i_dn;
  }
  
}

  • MYSQL啟動后你要導(dǎo)入自己的mysql文件码荔,在重啟一下服務(wù)漩勤,數(shù)據(jù)庫導(dǎo)入沒有寫
  • 具體的掛載目錄
image.png

4、單機(jī)版使用docker stack

  • 在swarm manager節(jié)點(diǎn)操作
docker swarm init 
image.png
  • 在manager節(jié)點(diǎn)部署服務(wù):
docker stack deploy black --compose-file=docker-compose.yml //docker-compose.yml所處的路徑缩搅,我運(yùn)行這命令在它的當(dāng)前目錄
image.png
測試了一下啟動沒問題<_>

4越败、更新war包版本

  • 更新鏡像的工具類 deploy-release.sh
#!/bin/bash

docker service update --image black-web:$1 black_black-web

例如:

./deploy-release.sh 1.0.1   //傳入版本號更新  1.0.1是鏡像的版本
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市硼瓣,隨后出現(xiàn)的幾起案子究飞,更是在濱河造成了極大的恐慌,老刑警劉巖堂鲤,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亿傅,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘟栖,警方通過查閱死者的電腦和手機(jī)葵擎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來半哟,“玉大人酬滤,你說我怎么就攤上這事≡⒄牵” “怎么了盯串?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戒良。 經(jīng)常有香客問我体捏,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任译打,我火速辦了婚禮耗拓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奏司。我一直安慰自己乔询,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布韵洋。 她就那樣靜靜地躺著竿刁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搪缨。 梳的紋絲不亂的頭發(fā)上食拜,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音副编,去河邊找鬼负甸。 笑死,一個胖子當(dāng)著我的面吹牛痹届,可吹牛的內(nèi)容都是我干的呻待。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼队腐,長吁一口氣:“原來是場噩夢啊……” “哼蚕捉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柴淘,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤迫淹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后为严,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敛熬,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年梗脾,在試婚紗的時候發(fā)現(xiàn)自己被綠了荸型。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炸茧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稿静,到底是詐尸還是另有隱情梭冠,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布改备,位于F島的核電站控漠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盐捷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一偶翅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碉渡,春花似錦聚谁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至习霹,卻和暖如春朵耕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淋叶。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工阎曹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煞檩。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓芬膝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親形娇。 傳聞我的和親對象是個殘疾皇子锰霜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355