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

云收藏

一些朋友可能还不了解云收藏,给大家简单介绍一下:

云收藏是一个使用 Spring Boot 构建的开源网站,可以让用户在线随时随地收藏的一个网站,在网站上分类整理收藏的网站或者文章,可以作为稍后阅读的一个临时存放。作为一个开放开源的软件,可以让用户从浏览器将收藏夹内容导入到云收藏,也支持随时将云收藏收集的文章导出去做备份。

产品主页

http://favorites.ren

项目主页

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

产品截图

image

核心功能点:

  • 收藏、分类、检索文章
  • 导出、导出(包活从浏览器中)
  • 可以点赞、分享、讨论
  • 注册、登录、个人账户
  • 临时收藏、查看别人收藏
  • 其它…

项目使用技术:

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

Redis 后期去掉是由于服务器资源有限和部署麻烦

项目改造

依赖环境

准备一台系统为 Centos 7 以上的服务器,系统需要安装 Docker 和 Docker Compos 环境,安装方法可以参考前面两篇文章:

Docker 化改造

项目改造后的项目机构图如下:

image

因为上一篇文章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=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 上面,这样大家部署的时候仅需要三步,即可成功部署云收藏项目。

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、启动项目

配置完成后,后台启动

[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 ~]# 

这样以后如果我们想部署云收藏项目就变的非常简单,仅仅需要三步可以愉快的搭建自己的收藏系统了,小伙伴们赶紧动起手来。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容