Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 開源軟體雲收

來源:互聯網
上載者:User

標籤:Spring Boot   Dokcer   雲收藏   

只需三步即可部署開源項目雲收藏,打造專屬個人的收藏系統,就是這麼簡單!

雲收藏項目已經開源2年多了,作為當初剛開始學習 Spring Boot 的練手項目,使用了很多當時很新的技術,現在看來其實很多新技術是沒有必要使用的,但做為學習案例來講確實是一個絕佳的 Spring Boot 實踐。

從開源到現在,寫了一些教程給大家介紹如何部署雲收藏,如何在IDE中運行雲收藏,但是仍然有很多的朋友不知道如何使用,如何部署?就像“請提供一份雲收藏資料結構” 這樣的問題我至少都回答了一百多次,並且在 github 關閉了近十個類似的問題。

這也從另外一個方面可以看出,部署雲收藏項目對一些朋友還是比較複雜,現在有了 Docker 我們就可以愉快的解決這個問題,只需三步就可以部署雲收藏項目,打造專屬個人的收藏系統。

雲收藏

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

雲收藏是一個使用 Spring Boot 構建的開源網站,可以讓使用者線上隨時隨地收藏的一個網站,在網站上分類整理收藏的網站或者文章,可以作為稍後閱讀的一個臨時存放。作為一個開放開源的軟體,可以讓使用者從瀏覽器將收藏夾內容匯入到雲收藏,也支援隨時將雲收藏收集的文章匯出去做備份。

產品首頁

http://favorites.ren

項目首頁

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

產品

核心功能點:

  • 收藏、分類、檢索文章
  • 匯出、匯出(包活從瀏覽器中)
  • 可以點贊、分享、討論
  • 註冊、登入、個人賬戶
  • 臨時收藏、查看別人收藏
  • 其它...

項目使用技術:

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

Redis 後期去掉是由於伺服器資源有限和部署麻煩

項目改造

依賴環境

準備一台系統為 Centos 7 以上的伺服器,系統需要安裝 Docker 和 Docker Compos 環境,安裝方法可以參考前面兩篇文章:

  • Docker(一):Docker入門教程
  • Docker(四):Docker 三劍客之 Docker Compose

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檔案主要新增了兩部分的內容:

  • 1、將 Nginx 和 app 的日誌映射到宿主機上,方便我們查看日誌
  • 2、將 Mysql 的資料存放區映射到宿主機上,這樣的好處是不至於將叢集關掉之後資料丟失

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=utf8character_set_filesystem=utf8collation-server=utf8_general_ciinit-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.7COPY my.cnf /etc/my.cnf

使用 Mysql5.7 版本,並且將同目錄下的 my.cnf 拷貝到伺服器/etc/my.cnf

這樣 Mysql 的相關資訊就定義好了。

其它

其它內容變化不大,nginx 目錄下存放著 Nginx 的設定檔,項目新增application-docker.properties檔案,將資料庫連接部分修改即可。

改造完成之後,我們只需要將項目拷貝到部署伺服器然後執行:docker-compose up就可以啟動。

部署

我已經將項目的改造內容提交到 github 上面,這樣大家部署的時候僅需要三步,即可成功部署雲收藏項目。

1、下載源碼解壓

下載最新發行版本

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

修改內容如下

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

地址為部署伺服器的地址

3、啟動項目

配置完成後,後台啟動

[[email protected]~]# docker-compose up -dCreating network "favoriteswebfavorites111_default" with the default driverCreating favorites-nginx                  ... doneCreating favoriteswebfavorites111_mysql_1 ... doneCreating favoriteswebfavorites111_app_1   ... done

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

輔助內容

啟動後想查看某個容器內的服務運行情況,可以使用以下命令進入:

使用docker ps查看宿主機上面啟動並執行 Docker 容器

[[email protected]_73_217_centos ~]# docker psCONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                  PORTS                                      NAMESa466ce6e58a5        favoriteswebfavorites111_app     "/usr/local/bin/mv..."   16 hours ago        Up 16 hours             8080/tcp                                   favoriteswebfavorites111_app_11b4f1b912de0        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-nginx65b481bb7741        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#比如進入項目容器中[[email protected]_73_217_centos ~]# docker exec -ti a466ce6e58a5 bash[email protected]:/app# ps -ef|grep java...

退出容器執行以下命令:

[email protected]:/app# exitexit[[email protected]_73_217_centos ~]# 

這樣以後如果我們想部署雲收藏項目就變的非常簡單,僅僅需要三步可以愉快的搭建自己的收藏系統了,小夥伴們趕緊動起手來。

Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 開源軟體雲收

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.