社区中 docker 部署 solo 的教程已经非常详尽,但是我之前部署的时候由于部分内容理解不够透彻,走了不少弯路。并且在社区中貌似找不到一个完善的将静态资源分离的教程,阿里云 1M 带宽跑起来是非常吃力的,特别是使用图片资源丰富的皮肤!因此,本文旨在帮助各位同僚分离静态资源,并给予使用静态文件部署博客的同僚一个启发 ..

使用 docker 部署并自动更新 solo+ 分离静态资源自动上传至对象存储

社区中 docker 部署 solo 的教程已经非常详尽,但是我之前部署的时候由于部分内容理解不够透彻,走了不少弯路。并且在社区中貌似找不到一个完善的将静态资源分离的教程,阿里云 1M 带宽跑起来是非常吃力的,特别是使用图片资源丰富的皮肤!因此,本文旨在帮助各位同僚分离静态资源,并给予使用静态文件部署博客的同僚一个启发。
关于安装 docker 这些暂时就不讲了,关于 docker 的操作命令可以看我另一篇文章。直接上 docker 部署的配置:

#!/bin/bash

#
# Solo docker 更新重启脚本
#
# 1. 请注意修改参数
# 2. 可将该脚本加入 crontab,每日凌晨运行来实现自动更新
#
docker pull b3log/solo #拉取最新镜像
docker stop solo #停止容器,容器的名字必须和下文中的名字对应
docker rm solo #删除容器

# 下面这条命令的作用是创建并启动容器
# 加入--restart=always 参数可以在开机启动服务后自动启动容器 只需要设置开机自启docker服务即可实现开机自启docker容器。此脚本设置定时任务可以实现定时更新。
docker run --restart=always --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \	#数据库用户
--env JDBC_PASSWORD="root123" \ #数据库密码
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ #数据库的连接地址,问号后面那一坨在jdbc驱动版本8以上是必须的
--volume ~/latke.properties:/opt/solo/latke.properties \ #此参数表示把docker容器内部的latke.properties文件挂载到当前用户家目录下,作用在于以后不管怎么升级镜像,都使用当前家目录下的配置文件中的配置。这些配置也可以直接用在docker参数中,个人比较懒,直接挂载
b3log/solo --listen_port=8080 --server_scheme=https --server_host=blog.jiangqiang.xin --server_port=

#如果不需要分离静态资源,下面几行都可以不需要
rm -rf /root/tmp/solo #删除之前备份的静态资源

docker cp solo:/opt/solo /root/tmp/solo &&./ossutil64 cp -rf /root/tmp/solo oss://blog--resource/solo-blog #前半句表示把容器内部的静态资源复制到宿主机,后半句表示把宿主机上的文件复制到对象存储中。在镜像更新后可以自动把静态资源更新到oss中。

使用方式:把上面内容保存到一个文本文件中,我取名为 autoUpgrade.sh,然后添加执行权限 chmod +x autoUpgrade.sh,最后设置定时任务即可,设置定时任务的方法百度搜索 crontab。注意:ossutil64 是需要单独下载的一个工具,下载地址以及详细使用说明见这里

最后给出我挂载的 latke.properties 的配置作为参考:

#### Server ####
# Browser visit protocol
serverScheme=https #https协议,具体怎么添加证书配置,可以看我另一篇文章关于NGINX的配置
serverHost=blog.jiangqiang.xin #博客最后访问的域名
serverPort=80 

#### Runtime Mode ####
#runtimeMode=DEVELOPMENT
runtimeMode=PRODUCTION

#staticserverScheme=https
staticServerHost=resource.jiangqiang.xin/solo-blog #静态资源上传到oss之后的访问路径
staticServerPort=443 #访问静态资源的端口号

  • Docker

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

    306 引用 • 717 回帖 • 525 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    1045 引用 • 7993 回帖 • 640 关注
回帖
请输入回帖内容...