Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
作者:13
GitHub:https://github.com/ZHENFENG13
版权声明:本文为原创文章,未经允许不得转载。
**项目演示视频:https://www.bilibili.com/video/av52551095 **
个人博客
对于技术人员来说,拥有自己的个人博客应该是一件令人向往的事情,可以记录和分享自己的观点,想到这件事就觉得有意思,但是刚开始写博客的时候脑海中是没有搭建个人博客这一想法的,因为刚起步的时候连我都不清楚写博客能坚持到第几篇,不过随着时间的推移,博客量的增加,搭建一个私人博客网站的想法就越来越强烈,独立开发,独立维护,然后根据需要一点点的再往项目中添加其他功能,这种感觉虽然没有体会过,不过应该会挺酷的。
一边工作,一边更新ssm-maven的代码和博客,其实这些工作所占用的时间点很密集,足够让我忙的找不着北了,由于时间原因也拖更了不少博客。就是在这种情况下,我另一边还在为自己的博客个人站做准备,修改了Tale项目,做了大量的编码工作,然后现在又开始为这个项目的上线及相应的介绍博文做准备,也是有点傻劲儿的。
OK,说了这么多,肯定很多人觉得我在自夸,没错,我就是在夸我自己,因为真的挺辛苦的,有的时候自己还是要给自己一点掌声和自我鼓励的,不然我都不知道我做了这么多是为了什么,哈哈哈哈哈。
选择Tale作为模板的原因及个人想法
开源的商业博客平台很多,优秀之作也自然不少,不过一般都是商业平台,像开发人员的话,可能更追求灵活性及可维护行,因此自己开发一个博客平台或者在优秀的开源博客进行二次开发更好。巧合的是,当我在构思该如何着手这方面工作的时候,看到了一篇关于Java开源博客系统Tale的介绍博文,当时公司的工作也多,因此收藏了起来,一段时间之后才去研究,然后开始按照自己的想法去改造进行了二次开发,这个后面再说,还是说说Tale博客系统,当我打开这个博客网站的时候,目光瞬间就被吸引住了,简单、美观、大方,感觉看上去特别的舒服,炎炎夏日中的一件白衬衫,清爽,洁白,真的是第一眼就喜欢上了这个博客。接着就去研究了项目的部署(过程不表),体验了一下后台功能,作为一个博客模板来说功能是较为齐全的,基本能够满足私人博客网站的需求,因此就打算将此系统来作为自己的个人博客网站模板。
首页的效果如下图所示,由于原Tale网站无法打开就无法看到Tale的效果图了,此截图为我的网站首页图片,模板是一样的,相信你看到这张效果图也会喜欢上这个博客的:

至于为什么又花了一个多月的时间进行二次开发,以致于5月13日才上线,有以下原因:
- 原项目是使用Blade框架进行开发
- 域名及云服务器购买,网站的ICP备案
- 整合docker、docker-compose
- install流程修改
- 部分功能修改
- 工作太忙,无法全部投入
- 刚好是13号,对,13
原Tale博客后台的系统设置中,有关闭「允许重新安装」的选项,这个默认设置为「关闭」,但是实际还是能够进入安装页面,如果有网友能够猜出博主的数据库用户名和密码的话,估计就能把对方的博客给一锅端了。现在这个问题应该是修复了,但是3月份刚看到这个项目的时候是存在这个问题的,因此也就动了修改的心思。


另外一个原因,就是代码里的install模块,下载下来运行之后,总觉得这个过程很别扭,首先,这是一个私人的博客系统,数据库的相关配置应该是确定了的,不出意外的话应该不会有改动的,直接写在代码里应该更好,个人感觉install模块中初始化数据库步骤的意义并不是很大甚至有些多余(个人看法),另外就是直接暴露出这个页面和接口地址并不是特别安全,因此就想重写这个过程。
这一个多月的时间里做了以下修改:首先是项目整体由Blade框架开发改造为SpringBoot+Mybatis开发,接着是整合了Docker使得部署简易化,其次就是完全删除了原来的install过程,改为由docker-compose实现的一句脚本命令完成数据库的初始化及项目启动,无需多余操作,主要参考了tale和my-blog-project项目。
整合Docker简化部署过程
原来的部署过程有:
- 搭建Java运行环境,
- 安装mysql数据库,
- 初始化数据,
- 运行jar包。
其实也没有太多的步骤,但是那段时间刚好在上手Docker,因此就特别的想在项目中整合Docker,检验一下自己的知识掌握程度,同时也使得部署的步骤更少,但是删除了install过程后,又忍不住思考是否能让mysql数据库安装及数据的初始化也通过Docker来实现,就不需要人为的再去搭建数据库和运行数据库脚本了(其实就是懒),这个实现过程花费时间较长,最终通过docker-compose及一些shell脚本命令实现了整个过程,只要运行一行shell启动脚本命令即可实现Mysql数据库的创建、数据导入、Mysql容器的创建及启动、blog容器创建及启动、两个容器的连接交互、项目启动。

启动脚本如下:
#!/usr/bin/env bash
set -e
mvn clean install -Dmaven.test.skip=true
# 停止原先运行的容器
docker-compose stop
docker-compose rm -f
#删除名称为none的镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi
# 使用docker-compose启动多容器应用
docker-compose up --build -d
# 日志
docker-compose logs -f
代码太多啦,就不放上来了,以后有时间的话会针对不同的功能和技术做详细介绍的,接下来是赏图时间:
首页:

文章详情页:

登录页:

文章列表页:

文章编辑页:

分类编辑:

结语
推荐一下自己的达人课,感兴趣的朋友可以看一下:SSM搭建精美实用的管理系统

个人对这个博客系统还是挺满意的,以后也会陆陆续续添加功能进来,比如搜索引擎啊,缓存功能,ELK日志系统等等,进一步来完善这个系统,当然ssm项目的进阶篇近期可能就要拖更了,有时间再写吧。
这是我的个人博客地址,欢迎大家去浏览、指导和批评。
由于这个是个人站点,账号和密码就不公布了,但是这个博客系统的代码是开源的,可以到我的GitHub仓库里下载,地址在这里,有问题也可以在这里提出来,如果觉得项目还行的话,给项目一个star吧。
无法访问GitHub,也可以到开源中国码云下载项目代码。
Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦的更多相关文章
- 如何快速部署国人开源的 Java 博客系统 Tale
除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...
- 讲解开源项目:5分钟搭建私人Java博客系统
本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...
- spring-boot序章:打造博客系统
blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...
- 简洁美观的Java博客系统Tale开源了,让每一个有故事的人更好的表达想法
Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...
- Java 博客系统 Tale
Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...
- 使用Docker部署Spring-Boot+Vue博客系统
在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...
- Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!
大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下: star数量 ...
- SpringBoot技术栈搭建个人博客【后台开发】
前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
随机推荐
- 如何使用ArcGIS发布LiDAR 点云
LiDAR--Light Detection And Ranging,即激光探测与测量技术. 下面将介绍如何使用ARCGIS来发布LiDAR的成果点云数据. LiDAR的点云数据一般格式为LAS.在A ...
- Java单例模式再加强——按组多单例
最近要使用alibaba的rocket mq(我们公司对其进行了封装,使其运行在dotNet平台上,Java还是和原生的差不多,涉及公司的内容本文不会提及),其中 在生产者组这一块,建议是用单例模式的 ...
- IOS简单画板实现
先上效果图 设计要求 1.画笔能设置大小.颜色 2.有清屏.撤销.橡皮擦.导入照片功能 3.能将绘好的画面保存到相册 实现思路 1.画笔的实现,我们可以通过监听用户的 平移手势 中创建 UIBezie ...
- iOS9,10没有问题,iOS8上面一登录就崩溃,原因Assets的问题
在项目中开发中,打包成一个ipa的包,发现iOS9,10,运行非常流畅,iOS8上面一运行就崩溃,找了好久,才找到原因竟然是Assets的问题,一开始我把ipa包放在蒲公英上面托管扫码下载的,用iTu ...
- EntityFramework Core不得不注意的性能优化意外收获,你会用错?
前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测,于是想着利用放假时间去实际测试下,结果本文就出来了,too young,too simple,后续博主会从底层翻译表达式树弄起, ...
- [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(四)
一步步打造一个简单的 MVC 电商网站 - BooksStore(四) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...
- 在centOS7.2里安装virtualenv和flask
1) 安装pip工具 #wget https://bootstrap.pypa.io/get-pip.py #python get-pip.py 2) 安装virtualenv,并创建一个开发环境 # ...
- Selenium 2.0与Selenum 3.0介绍
什么是Selenium Selenium是一组web自动化测试工具集,它由以下几个部分构成: Selenium IDE(Integrated Development Environment)这是Fir ...
- 易汇金在线支付接口实例。ecshop和shopex,shopnc,iwebshop下完美无错(最新)
最近为客户的一个在线商城做了一个易汇金在线支付的接口.跟大家分享一下. 1 首先可以模仿其他的接口,比如支付宝,财付通等的接口,构建模块功能文件和语言文件. 功能模块构建: /includes/mod ...
- JDK8-十大新特性-附demo
JDK原计划17年上半年就发版,但未成功发版.才发现JDK8的特性还没总结过,特此总结. 一.十大特性. 1.Lambda表达式 2.Stream函数式操作流元素集合 3.接口新增:默认方法与静态方法 ...