只需三步便可部署開源項目雲收藏,打造專屬我的的收藏系統,就是這麼簡單!html
雲收藏項目已經開源2年多了,做爲當初剛開始學習 Spring Boot 的練手項目,使用了不少當時很新的技術,如今看來其實不少新技術是沒有必要使用的,但作爲學習案例來說確實是一個絕佳的 Spring Boot 實踐。java
從開源到如今,寫了一些教程給你們介紹如何部署雲收藏,如何在IDE中運行雲收藏,可是仍然有不少的朋友不知道如何使用,如何部署?就像「請提供一份雲收藏數據結構」 這樣的問題我至少都回答了一百屢次,而且在 github 關閉了近十個相似的問題。mysql
這也從另一個方面能夠看出,部署雲收藏項目對一些朋友仍是比較複雜,如今有了 Docker 咱們就能夠愉快的解決這個問題,只需三步就能夠部署雲收藏項目,打造專屬我的的收藏系統。nginx
一些朋友可能還不瞭解雲收藏,給你們簡單介紹一下:git
雲收藏是一個使用 Spring Boot 構建的開源網站,可讓用戶在線隨時隨地收藏的一個網站,在網站上分類整理收藏的網站或者文章,能夠做爲稍後閱讀的一個臨時存放。做爲一個開放開源的軟件,可讓用戶從瀏覽器將收藏夾內容導入到雲收藏,也支持隨時將雲收藏收集的文章導出去作備份。github
產品主頁web
http://favorites.ren spring
項目主頁sql
https://github.com/cloudfavorites/favorites-webdocker
產品截圖
核心功能點:
項目使用技術:
Redis 後期去掉是因爲服務器資源有限和部署麻煩
依賴環境
準備一臺系統爲 Centos 7 以上的服務器,系統須要安裝 Docker 和 Docker Compos 環境,安裝方法能夠參考前面兩篇文章:
Docker 化改造
項目改造後的項目機構圖以下:
由於上一篇文章Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 實踐 已經介紹了此類項目結構和內容含義,所以這裏主要描述新增內容。
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
相對上一篇內容本次的docker-compose.yaml
文件主要新增了兩部分的內容:
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 變化內容:
version: '3' services: mysql: build: ./mysql environment: TZ: Asia/Shanghai volumes: - ./mysql_data:/var/lib/mysql
我將有變化的內容都摘了出來,mysql 新增了 TZ 環境變量將時區指向上海,另外咱們將 Mysql 鏡像內容提出來,放到項目的 mysql 目錄下單獨構建。mysql 目錄下有兩個文件,一個是 Dockerfile 定義 Mysql 鏡像,一個是 my.cnf 文件定義 Mysql 編碼等信息。
my.cnf 文件內容
#省略一部分 ... 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 文件內容
FROM mysql/mysql-server:5.7 COPY my.cnf /etc/my.cnf
使用 Mysql5.7 版本,而且將同目錄下的 my.cnf 拷貝到服務器/etc/my.cnf
中
這樣 Mysql 的相關信息就定義好了。
其它
其它內容變化不大,nginx 目錄下存放着 Nginx 的配置文件,項目新增application-docker.properties
文件,將數據庫鏈接部分修改便可。
改造完成以後,咱們只須要將項目拷貝到部署服務器而後執行:docker-compose up
就能夠啓動。
我已經將項目的改造內容提交到 github 上面,這樣你們部署的時候僅須要三步,便可成功部署雲收藏項目。
一、下載源碼解壓
下載最新發布版本
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/
二、修改配置文件
修改文件application-docker.properties
vi app/src/main/resources/application-docker.properties
修改內容以下
favorites.base.path=http://xx.xxx.xx.xx/
地址爲部署服務器的地址
三、啓動項目
配置完成後,後臺啓動
[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/
,就能夠看到雲收藏的首頁了。
輔助內容
啓動後想查看某個容器內的服務運行狀況,可使用如下命令進入:
使用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
根據上面查詢的 Docker 容器 ID 信息,執行下面命令
docker exec -ti CONTAINER_ID bash #好比進入項目容器中 [root@VM_73_217_centos ~]# docker exec -ti a466ce6e58a5 bash root@a466ce6e58a5:/app# ps -ef|grep java ...
退出容器執行如下命令:
root@a466ce6e58a5:/app# exit exit [root@VM_73_217_centos ~]#
這樣之後若是咱們想部署雲收藏項目就變的很是簡單,僅僅須要三步能夠愉快的搭建本身的收藏系統了,小夥伴們趕忙動起手來。