前言

5月13号上线了自己的个人博客,《Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦》,紧接着也在github上开源了博客的代码,到现在为止,感觉这个项目还是有一点点关注度的,包括博客站点的访问量,github仓库中MyBlog项目的访问量都还不错,总体来说是一种进步且向上的态势。

这是某个24小时内http://blog.hanshuai.xin站点的访问日志分析面板:

但是呢,也渐渐觉得自己的个人想法有些影响了这个项目。在My-Blog博客系统最初的设计和技术选型上,其实docker算是几个技术栈中我比较注重的一个,因为近一年多来比较关注容器化技术,因此,即使是在这个博客项目中,我也较多的将重点放在docker上,不管是开发部署,还是以后的扩展计划上,更多的都是围绕docker容器技术。

不过事与愿违吧,收到的反馈和一些统计数据让我不得不重新思考整个项目,我所关注和重视的东西,其他人可能并不是特别在意和易于接受,于是我就想,我是不是并没有考虑到其他人的感受,项目既然已经开源了,是不是应该不要太个人主义了。

初露端倪

下图是My-Blog的wiki文档,从图中也可以看出原来的偏重点,将docker相关的文档放在前面,当初编写wiki文档时也是如此,开始的时候甚至并没有将非docker方式的部署教程贴出来,而是后来有不少朋友问了之后才写了#3.1这个wiki Page,但是后来发现,这一页的浏览量其实远远超出其他的文档,大家普遍都去查看非docker环境下的部署教程,也一直在问相关问题。

有一位使用了这个项目的朋友跟我说,因为项目中使用了docker技术的原因,他部署项目花了两三天才完成,仅仅是学习docker命令及相关知识就用了差不多两天,时间成本太高,这个功能对于某些朋友来说,甚至有些鸡肋,因为有些人确实只是觉得项目看起来不错,因此打算作为自己的博客模板,但是用起来却是万分复杂,基于此原因应该也有不少朋友打了退堂鼓,虽然我在wiki中也添加了一些非docker方式部署和开放的教程,但是由于个人的偏好及目录结构原因,docker模块与项目的耦合依然很高。

docker组件化修改

这是原结构图:

很明显,docker代码与java代码耦合在一起。

3.1.1版本修改后的目录结构图:

docker相关文件已单独提取出来作为docker-extension,同时配置文件和运行脚本也做了一定的修改,使得docker启动和非docker启动都可以很简单,即使切换起来也不用人为修改代码,按照wiki教程里说的方法即可。

目前项目中,唯一可以看到docker带来的便利及提供的帮助就只有mysql,因此有些朋友可能觉得docker并不是特别酷,后期的话,随着redis、nginx、logstash、elasticsearch、kinaba、kafka...等组件的添加,结合docker-compose进行容器编排,那个时候应该就会以另外一个心态来面对docker技术了,个人觉得docker真的可以算得上一个奇淫技巧,只是需要时间来发现而已,很明显,这个时间不是现在。

个人想法

docker化,个人比较熟悉也比较喜欢,而且操作起来比较方便,因此主观意向比较浓厚,就将docker相关的一些代码和功能都添加进来了,这是最初做这个项目时的想法,但是现在看起来,docker与原有代码目录搅在一起,项目目录看起来比较臃肿,而且计划中,以后会基于docker继续扩展一些功能,如果再去添加其他组件到目录中,应该会更加耦合、更加的"乱"。

再者,有些人并没有docker基础,如果想要使用这个项目,还得去学习docker相关知识,每次思考这个问题的时候,我都会试着以一个第三者的角度去想,渐渐地觉得这个项目确实有点不人性化,我只是想用一下这个博客,我还要去安装docker、学习docker命令?不学的话还不能好好用这个项目搭博客了?

因此想要将docker相关的扩展和组件剥离出来,只作为其中一个组件,"组件"这个说法不知道合适不合适、正不正确,暂时就这么叫吧,这么做的目的是将docker相关代码剥离出来,不耦合于项目中,想要使用docker相关功能的话就用,如果不想用的话完全可以按照原有的操作习惯来部署和开发My-Blog,应该将选择权交给用户,而不是我个人喜欢怎么样就怎么样,既然选择了开源,就应该将心态放开,考虑一下其他人的感受,不能太自私了,多接受别人的意见也不是一件困难的事情。

docker只是一个工具,在项目中是一个锦上添花的作用,并不是一个不可或缺的部分,因此,为了方便其他人,做出了此次的修改,进行了较大的目录结构调整。

结语

首发于我的个人博客,地址在这里

通过这次事件,我觉得不能把我们的想法和习惯强加给其他人,如果一个朋友只想简简单单搭个博客,结果看到这个博客页面和功能还行,满足要求,但是一看代码,各种框架和技术耦合在一起,又要学新东西,会让人萌生退意的。

为的是方便他人,而不是给别人添麻烦。

希望大家提出更多意见,有喜欢这个项目的也很开心邀请你共同加入项目中。

Java开源博客My-Blog之docker组件化修改的更多相关文章

  1. Java开源博客My-Blog(SpringBoot+Docker)系列文章

    My Blog 1.Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦 2.My-Blog搭建过程:如何让一个网站从零到可以上线访问 3.将数据的初始化放到 ...

  2. Java开源博客My-Blog之docker容器组件化修改

    前言 5月13号上线了自己的个人博客,<Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦>,紧接着也在github上开源了博客的代码,到现在为 ...

  3. Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程

    写在前面的话 <Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦> <Java开源博客My-Blog之docker容器组件化修改> ...

  4. Java 开源博客——B3log Solo 0.6.6 正式版公布了!

    Java 开源博客 -- B3log Solo 0.6.6 正式版公布了!欢迎大家下载. 该版本号引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也很欢迎大家參与 ...

  5. Java 开源博客——B3log Solo 0.6.7 正式版公布了!

    Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...

  6. Java 开源博客——B3log Solo 0.6.1 正式版发布了!

    Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...

  7. Java 开源博客——B3log Solo 0.6.7 正式版发布了!

    Java 开源博客 -- B3log Solo 0.6.7 正式版发布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也非常欢迎大家参与进来 :-) 特性 基于标签的文章分类 ...

  8. Java 开源博客——B3log Solo 0.6.6 正式版发布了!

    Java 开源博客 -- B3log Solo 0.6.6 正式版发布了!欢迎大家下载. 该版本引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也非常欢迎大家参与 ...

  9. Java 开源博客——B3log Solo 0.6.5 正式版发布了!

    Java 开源博客 -- B3log Solo 0.6.5 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,也是 B3log Solo 的最后一个大版本. 这个版本发布后,B3log Solo ...

随机推荐

  1. Web攻防系列教程之跨站脚本攻击和防范技巧详解

    摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很 难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么 ...

  2. 从LINQ开始之LINQ to Objects(下)

    前言 上一篇<从LINQ开始之LINQ to Objects(上)>主要介绍了LINQ的体系结构.基本语法以及LINQ to Objects中标准查询操作符的使用方法. 本篇则主要讨论LI ...

  3. netty心跳机制测试

    netty中有比较完善的心跳机制,(在基础server版本基础上[netty基础--基本收发])添加少量代码即可实现对心跳的监测和处理. 1 server端channel中加入心跳处理机制 // Id ...

  4. js文件下载及命名(兼容多浏览器)

    函数功能:实现主流浏览器的文件下载功能: 兼容性: >=IE10,Edge,chrome,firefox; 与后台的请求方式:GET请求,  url携带参数  url?id=123(隐藏文件真实 ...

  5. 如何同时完成多个ajax之后再执行某个方法 ? 使用$.when().done();

    jQuery中的$.when()方法比较复杂,这里不作全面讲解,只写一个同时完成多个ajax请求后执行操作的方法. 有时候我们需要等待多个ajax执行完以后,再执行某个操作. 写法如下: $.when ...

  6. nodeJs中npm详解

    npm 是 Node.js 的模块依赖管理工具.作为开发者使用的工具,主要解决开发 node.js 时会遇到的问题.如同 RubyGems 对于 Ruby 开发者和 Maven 对于 Java 开发者 ...

  7. phpcms通过URL传参

    在PHPCMS中都会遇到通过URL传参数的问题,但是默认的只能取到$catid.$page等这类的值,特别是伪静态之后,想获得其他参数根本不可能,有的人用$_GET["参数"]这种 ...

  8. Datatable插件的简单的使用方式 和 学习方式

    gridyxz = $("#sjjg_table_yxz").DataTable({ "searching" : false,   "info&quo ...

  9. Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素

    最近..... 废话不多说上效果图 用的是UGUI 我先说思路 通过判断元素的位置信息来改变Hierarchy的顺序 实现无限滚动 改变位置的同时也要不断的调整Content的位置防止乱跳 元素锁定就 ...

  10. vue动画的用法

    vue动画 在vue.js中有两种写动画的方法,第一种就是像js里一样,用原生代码来实现,第二种则是使用animate.css的动画类文件,这个动画类和bootstrap.css文件类似,直接调用类就 ...