Spring Boot 2 - Docker (三):使用 Docker 部署 Spring Boot 開源軟件云收藏

云收藏

一些朋友可能還不了解云收藏,給大家簡單介紹一下:

云收藏是一個使用 Spring Boot 構(gòu)建的開源網(wǎng)站叫编,可以讓用戶在線隨時隨地收藏的一個網(wǎng)站,在網(wǎng)站上分類整理收藏的網(wǎng)站或者文章,可以作為稍后閱讀的一個臨時存放除破。作為一個開放開源的軟件虐呻,可以讓用戶從瀏覽器將收藏夾內(nèi)容導(dǎo)入到云收藏象泵,也支持隨時將云收藏收集的文章導(dǎo)出去做備份寞秃。

產(chǎn)品主頁

http://favorites.ren

項目主頁

https://github.com/cloudfavorites/favorites-web

產(chǎn)品截圖

image

核心功能點:

  • 收藏、分類偶惠、檢索文章
  • 導(dǎo)出蜕该、導(dǎo)出(包活從瀏覽器中)
  • 可以點贊、分享洲鸠、討論
  • 注冊堂淡、登錄、個人賬戶
  • 臨時收藏扒腕、查看別人收藏
  • 其它…

項目使用技術(shù):

  • Vue
  • Bootstrap
  • jQuery
  • Thymeleaf
  • Spring Data Jpa
  • Spring Boot Mail
  • WebJars
  • Mysql
  • Tomcat
  • Redis

Redis 后期去掉是由于服務(wù)器資源有限和部署麻煩

項目改造

依賴環(huán)境

準(zhǔn)備一臺系統(tǒng)為 Centos 7 以上的服務(wù)器绢淀,系統(tǒng)需要安裝 Docker 和 Docker Compos 環(huán)境,安裝方法可以參考前面兩篇文章:

Docker 化改造

項目改造后的項目機構(gòu)圖如下:

image

因為上一篇文章Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 實踐 已經(jīng)介紹了此類項目結(jié)構(gòu)和內(nèi)容含義瘾腰,因此這里主要描述新增內(nèi)容皆的。

docker-compose.yaml 文件

我們首先來看一下docker-compose.yaml文件:

version: '3'
services:
  nginx:
   container_name: favorites-nginx
   image: nginx:1.13
   restart: always
   ports:
   - 80:80
   - 443:443
   volumes:
     - ./nginx/conf.d:/etc/nginx/conf.d
     - /tmp/logs:/var/log/nginx

  mysql:
   build: ./mysql
   environment:
     MYSQL_DATABASE: favorites
     MYSQL_ROOT_PASSWORD: root
     MYSQL_ROOT_HOST: '%'
     TZ: Asia/Shanghai
   ports:
   - "3306:3306"
   volumes:
     - ./mysql_data:/var/lib/mysql
   restart: always

  app:
    restart: always
    build: ./app
    working_dir: /app
    volumes:
      - ./app:/app
      - ~/.m2:/root/.m2
      - /tmp/logs:/usr/local/logs
    expose:
      - "8080"
    command: mvn clean spring-boot:run -Drun.profiles=docker
    depends_on:
      - nginx
      - mysql

相對上一篇內(nèi)容本次的docker-compose.yaml文件主要新增了兩部分的內(nèi)容:

  • 1、將 Nginx 和 app 的日志映射到宿主機上蹋盆,方便我們查看日志
  • 2费薄、將 Mysql 的數(shù)據(jù)存儲映射到宿主機上,這樣的好處是不至于將集群關(guān)掉之后數(shù)據(jù)丟失

docker-compose.yaml文件中栖雾,日志部分:

version: '3'
services:
  nginx:
   volumes:
     - /tmp/logs:/var/log/nginx
  app:
   volumes:
     - /tmp/logs:/usr/local/logs

分別將 Nginx 和云收藏項目日志映射到宿主機的/tmp/logs楞抡,方便我們查看項目日志。

定制 mysql 初始化信息

docker-compose.yaml文件中析藕,Mysql 變化內(nèi)容:

version: '3'
services:
  mysql:
   build: ./mysql
   environment:
     TZ: Asia/Shanghai
   volumes:
     - ./mysql_data:/var/lib/mysql

我將有變化的內(nèi)容都摘了出來召廷,mysql 新增了 TZ 環(huán)境變量將時區(qū)指向上海,另外我們將 Mysql 鏡像內(nèi)容提出來账胧,放到項目的 mysql 目錄下單獨構(gòu)建竞慢。mysql 目錄下有兩個文件,一個是 Dockerfile 定義 Mysql 鏡像治泥,一個是 my.cnf 文件定義 Mysql 編碼等信息筹煮。

my.cnf 文件內(nèi)容

#省略一部分
...
character_set_server=utf8
character_set_filesystem=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
skip-character-set-client-handshake

此文件主要的作用是讓 Mysql 支持 UTF-8.

Dockerfile 文件內(nèi)容

FROM mysql/mysql-server:5.7
COPY my.cnf /etc/my.cnf

使用 Mysql5.7 版本,并且將同目錄下的 my.cnf 拷貝到服務(wù)器/etc/my.cnf

這樣 Mysql 的相關(guān)信息就定義好了居夹。

其它

其它內(nèi)容變化不大败潦,nginx 目錄下存放著 Nginx 的配置文件,項目新增application-docker.properties文件吮播,將數(shù)據(jù)庫連接部分修改即可变屁。

改造完成之后,我們只需要將項目拷貝到部署服務(wù)器然后執(zhí)行:docker-compose up就可以啟動意狠。

部署

我已經(jīng)將項目的改造內(nèi)容提交到 github 上面粟关,這樣大家部署的時候僅需要三步,即可成功部署云收藏項目。

1闷板、下載源碼解壓

下載最新發(fā)布版本

wget https://github.com/cloudfavorites/favorites-web/archive/favorites-1.1.1.zip

解壓

unzip favorites-1.1.1.zip

進入目錄

cd favorites-web-favorites-1.1.1/

2澎灸、修改配置文件

修改文件application-docker.properties

vi app/src/main/resources/application-docker.properties

修改內(nèi)容如下

favorites.base.path=http://xx.xxx.xx.xx/ 

地址為部署服務(wù)器的地址

3、啟動項目

配置完成后遮晚,后臺啟動

[root@~]# docker-compose up -d
Creating network "favoriteswebfavorites111_default" with the default driver
Creating favorites-nginx                  ... done
Creating favoriteswebfavorites111_mysql_1 ... done
Creating favoriteswebfavorites111_app_1   ... done

啟動完成后性昭,瀏覽器訪問上面配置地址:http://xx.xxx.xx.xx/,就可以看到云收藏的首頁了县遣。

輔助內(nèi)容

啟動后想查看某個容器內(nèi)的服務(wù)運行情況糜颠,可以使用以下命令進入:

使用docker ps查看宿主機上面運行的 Docker 容器

[root@VM_73_217_centos ~]# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                  PORTS                                      NAMES
a466ce6e58a5        favoriteswebfavorites111_app     "/usr/local/bin/mv..."   16 hours ago        Up 16 hours             8080/tcp                                   favoriteswebfavorites111_app_1
1b4f1b912de0        nginx:1.13                       "nginx -g 'daemon ..."   16 hours ago        Up 16 hours             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   favorites-nginx
65b481bb7741        favoriteswebfavorites111_mysql   "/entrypoint.sh my..."   16 hours ago        Up 16 hours (healthy)   0.0.0.0:3306->3306/tcp, 33060/tcp          favoriteswebfavorites111_mysql_1

根據(jù)上面查詢的 Docker 容器 ID 信息,執(zhí)行下面命令

docker exec -ti CONTAINER_ID  bash
#比如進入項目容器中
[root@VM_73_217_centos ~]# docker exec -ti a466ce6e58a5 bash
root@a466ce6e58a5:/app# ps -ef|grep java

退出容器執(zhí)行以下命令:

root@a466ce6e58a5:/app# exit
exit
[root@VM_73_217_centos ~]# 

這樣以后如果我們想部署云收藏項目就變的非常簡單萧求,僅僅需要三步可以愉快的搭建自己的收藏系統(tǒng)了其兴,小伙伴們趕緊動起手來。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夸政,一起剝皮案震驚了整個濱河市元旬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌守问,老刑警劉巖匀归,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耗帕,居然都是意外死亡穆端,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門兴垦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徙赢,“玉大人字柠,你說我怎么就攤上這事探越。” “怎么了窑业?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵钦幔,是天一觀的道長。 經(jīng)常有香客問我常柄,道長鲤氢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任西潘,我火速辦了婚禮卷玉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喷市。我一直安慰自己相种,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布品姓。 她就那樣靜靜地躺著寝并,像睡著了一般箫措。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衬潦,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天斤蔓,我揣著相機與錄音,去河邊找鬼镀岛。 笑死弦牡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漂羊。 我是一名探鬼主播喇伯,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拨与!你這毒婦竟也來了稻据?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤买喧,失蹤者是張志新(化名)和其女友劉穎捻悯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淤毛,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡今缚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了低淡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姓言。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔗蹋,靈堂內(nèi)的尸體忽然破棺而出何荚,到底是詐尸還是另有隱情,我是刑警寧澤猪杭,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布餐塘,位于F島的核電站,受9級特大地震影響皂吮,放射性物質(zhì)發(fā)生泄漏戒傻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一蜂筹、第九天 我趴在偏房一處隱蔽的房頂上張望需纳。 院中可真熱鬧,春花似錦艺挪、人聲如沸不翩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慌盯。三九已至周霉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亚皂,已是汗流浹背俱箱。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灭必,地道東北人狞谱。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像禁漓,于是被迫代替她去往敵國和親跟衅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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