云收藏
一些朋友可能還不了解云收藏,給大家簡單介紹一下:
云收藏是一個使用 Spring Boot 構(gòu)建的開源網(wǎng)站叫编,可以讓用戶在線隨時隨地收藏的一個網(wǎng)站,在網(wǎng)站上分類整理收藏的網(wǎng)站或者文章,可以作為稍后閱讀的一個臨時存放除破。作為一個開放開源的軟件虐呻,可以讓用戶從瀏覽器將收藏夾內(nèi)容導(dǎo)入到云收藏象泵,也支持隨時將云收藏收集的文章導(dǎo)出去做備份寞秃。
產(chǎn)品主頁
項目主頁
https://github.com/cloudfavorites/favorites-web
產(chǎn)品截圖
核心功能點:
- 收藏、分類偶惠、檢索文章
- 導(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)圖如下:
因為上一篇文章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)了其兴,小伙伴們趕緊動起手來。