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

本贴最后更新于 2010 天前,其中的信息可能已经东海扬尘

社区中 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 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    497 引用 • 934 回帖
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1444 引用 • 10083 回帖 • 508 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Word
    13 引用 • 41 回帖
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 280 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 269 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 8 关注
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 360 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    46 引用 • 114 回帖 • 166 关注
  • 倾城之链
    23 引用 • 66 回帖 • 169 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 253 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 830 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 88 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 644 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10185 引用 • 46283 回帖 • 65 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 649 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 711 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    187 引用 • 832 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    115 引用 • 319 回帖
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 2 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 9 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    167 引用 • 597 回帖 • 2 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 767 关注