概述

首先感谢开源,此博客使用的是 solo 博客系统。操作系统是 ubuntu,虚拟化容器 docker,数据库 mysql,java 容器 tomcat,反代 nginx。(不要问什么要用 docker,可能是我有轻微洁癖以及懒,至于为什么有洁癖和懒就要用 docker......)

方法

一、 准备环境

主机和域名,我这里的主机选择亚马逊的 ec2,免备案还能搭梯子,第一年免费。域名从 GoDaddy 买的,绑定域名到 ip

二、 安装 docker-ce

参考官方文档https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

三、 安装数据库 myslq:

docker run --name database -e MYSQL_ROOT_PASSWORD=password -v /web/mysql/data:/var/lib/mysql -v /web/mysql/conf:/etc/mysql/conf.d -d mysql:5.7.20

上面的命令在 bash 中执行,第一次会从 docker hub 下载 mysql:5.7.20 这个镜像,所以你的网络要能访问 docker hub。选项说明如下

  • --name database设置容器名称,方便以后引用
  • -e MYSQL_ROOT_PASSWORD=password设置数据库 root 账户密码为 password
  • -v /web/mysql/data:/var/lib/mysql挂载宿主机的 /web/mysql/data 目录到容器的 /var/lib/mysql 目录,因为容器类似于虚拟机,只能把文件存放在自己的文件系统上,我们把宿主机的目录挂载到容器的这个目录上,当容器往 /var/lib/mysql/ 这个目录保存数据文件时,实际会存放在宿主机的 /web/mysql/data/ 目录下。因为容器是可以随时销毁的,无状态的,所以数据不能保存在容器中。(/var/lib/mysql/ 是 mysql 默认的数据存储路径)
  • -v /web/mysql/conf:/etc/mysql/conf.d这样在宿主机的 /web/mysql/conf/ 下的 conf 文件会被数据库读取并应用

详细说明请到 docker hub 上搜索 mysql 查看

四、 配置数据库:

进入数据库容器:docker exec -it database bash
登陆数据库:mysql -uroot -p,输入密码 password,执行下面的语句

CREATE DATABASE solo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE USER 'solouser'@'%' identified BY 'solo@pwd';

GRANT ALL ON solo.* TO 'solouser'@'%';

FLUSH PRIVILEGES;

五、 下载 solo-2.4.0.war 包

下载 solo-2.9.5 的 war 包(https://pan.baidu.com/s/1dzk7SU),上传到 /web/solo/ 目录下

六、 安装 tomcat:

docker run --name tomcat -p 8080:8080 -v /web/solo:/bitnami/tomcat/data --link database:database -d bitnami/tomcat:9.0

选项说明如下:

  • -p 8080:8080 端口映射,将容器中的 8080 端口映射到宿主机的 8080 端口,因为 tomcat 是在容器中运行,容器类似虚拟器,所以 tomcat 监听的是容器的 8080 端口,所以需要把它映射出来,-p: 端口映射,格式为:主机 (宿主) 端口: 容器端口

  • --link database:database 连接数据库容器,第一个 database 是之前创建的容器名,第二个 database 是别名,名称可以随便。目的是为了访问方便,比如两个 tomcat 容器都监听 8080 端口,不可能都映射到宿主机上来吧。这样就可以在 tomcat 容器中访问数据库的 3306 端口了。

  • -ddeamon

七、 设置配置文件并访问

参考solo 用户指南,然后在浏览器中访问你的博客,我的是http://www.dafsic.com:8080/solo-2.9.5, 对数据库进行初始化。为了不加 solo-2.9.5 这样的路径,我将 /web/solo/solo-2.9.5/ 路径下的文件都 mv 到 /web/solo/ROOT/ 路径下了,然后可以http://www.dafsic.com:8080 这样访问

配置 nginx 没有成功, 删除了原作者后面的步骤

作者:dafsic
链接: 使用 docker 搭建 solo 博客系统
来源:黑客派
协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

  • Solo

    Solo 是一款小而美的 Java 博客系统,通过一个命令就可以启动使用。

    381 引用 • 3226 回帖 • 704 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销, 可以很容易地在机器和数据中心中运行。最重要的是, 他们不依赖于任何语言、框架或包括系统。

    135 引用 • 200 回帖 • 807 关注
感谢    关注    收藏    赞同    反对    举报    分享