solo升级以及自动化更新的方法
2019-10-16 07:58:48来源:博客园 阅读 ()
solo升级以及自动化更新的方法
使用solo过程总涉及到更新问题,所以就在这里把solo更新的方法总结一下。希望能给小伙伴们一些帮助。如何选择更新方法主要是跟你的部署方式有关,如果你是通过 docker
方式进行部署,那么你可以还可以通过docker
方式来进行更新,这也是官方比较推荐的部署方式。如果是通过jar
包或者war
包来进行部署,那么更新时同样需要通过该方式来进行。好了闲话少叙进入正题。
使用docker更新
第一步: 获取最新镜像:
docker pull b3log/solo:latest
执行结果如下:
如果有新版本,该命令会自动拉取新镜像,也就是会上边下载的界面。自动更新镜像。
如果当前版本已是最新则会出现下边情况,此时也就不用更新。
第二步: 删除原来的容器
第一步虽然获取了最新的镜像,但是我们当前部署的容器却是旧的,需要我们删除之后重新进行部署。
执行docker ps
查看当前容器的运行情况
此处我部署的solo的容器名称是www_solo
,所以你在下边删除容器时要更改成自己的solo容器名称
docker stop www_solo
docker rm www_solo
执行结果如下:
第三步: 重新部署solo容器
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost
--env JDBC_PASSWORD="123456"
: 需要将123456
更改成自己的mysql密码--server_host=localhost
: 需要将localhost
更改成自己的域名
执行结果如下:
至此solo更新完成
通过jar包或者war包更新
此种方式一般都是通过源码来进行部署的,需要重新导入新的solo源码,配置相关信息,然后重新导出。具体的方法可以参考官方给的文档,此处不再详说。
通过脚本定期更新
首先,官方给了一个脚本用于更新或者重启,内容如下:
#!/bin/bash
#
# Solo docker 更新重启脚本
#
# 1. 请注意修改参数
# 2. 可将该脚本加入 crontab,每日凌晨运行来实现自动更新
#
docker pull b3log/solo
docker stop solo
docker rm solo
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost
上述脚本说实话用于重启容器可以,但是用于定期更新脚本稍微有点不足,因为定期更新的脚本正常应该检查当前部署的版本是否是最新版本,如果不是才更新。而上边的脚本每次执行都会重新部署,显得开销优点大。下边我们对该脚本进行优化,使其更加合理。
因为docker没有命令直接来获取当前下载的镜像是否是最新版本,但是当我们通过pull
一个镜像时我们会发现:如果当前本地镜像是最新镜像那么docker就不会从云端下载镜像,运行之后会出现如下结果:
如果当前镜像不是新的会出现如下运行结果:
因此我们可以借助grep
,来实现一个更新脚本``
#!/bin/bash
#
# Solo docker 更新脚本
#
# 1. 请注意修改参数
# 2. 可将该脚本加入 crontab,每日凌晨运行来实现自动更新
#
isUpdate=$(docker pull b3log/solo|grep "Downloaded")
#如果有新版本或者没有安装才会进行更新
if [[ -z $isUpdate ]]
then
echo This is the latest version
else
docker stop solo
docker rm solo
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost
fi
使用方法:
sudo ./docker-update.sh
如果是最新版会出现如下运行结果:
如果不是最新版会执行容器删除重启等命令,出现如下运行结果:
关于这一点我也想官方发起了Pull request
希望组织能接受吧。
当然如果希望一劳永逸的解决该问题,我们可以通过crontab
实现定时更新
首先将docker-update.sh
文件放到root
目录(当然其他目录)也可以下:
其次执行crontab -e
进入编辑界面添加如下内容(每天早上1点整执行更新任务):
0 1 * * * bash /root/docker-update.sh
通过crontab -l
查看例行任务是否添加成功。
整个过程的执行结果如下图所示:
后记
当然可能个人水平有限,中间难免会出现一些错误,如若发现恳请指出,不胜赐教。如果大家有更好的更新方法或者上边有任何疑问都欢迎大家在留言区提出,谢谢!
原文链接:https://www.cnblogs.com/goWithHappy/p/solo_update.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Feign【入门】
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Java跨平台原理(字节码文件、虚拟机) 以及Java安全性 2020-06-07
- JAVA自学笔记(5) 2020-06-02
- Java生鲜电商平台-生鲜系统代码审查以及优化方案(小程序/APP 2020-06-01
- Java动态代理与静态代理以及它能为我们做什么 2020-05-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash