solo升级以及自动化更新的方法
使用solo過程總涉及到更新問題,所以就在這里把solo更新的方法總結一下。希望能給小伙伴們一些幫助。如何選擇更新方法主要是跟你的部署方式有關,如果你是通過 docker方式進行部署,那么你可以還可以通過docker方式來進行更新,這也是官方比較推薦的部署方式。如果是通過jar包或者war包來進行部署,那么更新時同樣需要通過該方式來進行。好了閑話少敘進入正題。
使用docker更新
第一步: 獲取最新鏡像:
docker pull b3log/solo:latest執行結果如下:
如果有新版本,該命令會自動拉取新鏡像,也就是會上邊下載的界面。自動更新鏡像。
如果當前版本已是最新則會出現下邊情況,此時也就不用更新。
第二步: 刪除原來的容器
第一步雖然獲取了最新的鏡像,但是我們當前部署的容器卻是舊的,需要我們刪除之后重新進行部署。
執行docker ps查看當前容器的運行情況
此處我部署的solo的容器名稱是www_solo,所以你在下邊刪除容器時要更改成自己的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,來實現一個更新腳本``
使用方法:
sudo ./docker-update.sh如果是最新版會出現如下運行結果:
如果不是最新版會執行容器刪除重啟等命令,出現如下運行結果:
關于這一點我也想官方發起了Pull request希望組織能接受吧。
當然如果希望一勞永逸的解決該問題,我們可以通過crontab實現定時更新
首先將docker-update.sh文件放到root目錄(當然其他目錄)也可以下:
其次執行crontab -e進入編輯界面添加如下內容(每天早上1點整執行更新任務):
通過crontab -l查看例行任務是否添加成功。
整個過程的執行結果如下圖所示:
后記
當然可能個人水平有限,中間難免會出現一些錯誤,如若發現懇請指出,不勝賜教。如果大家有更好的更新方法或者上邊有任何疑問都歡迎大家在留言區提出,謝謝!
總結
以上是生活随笔為你收集整理的solo升级以及自动化更新的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面兜兜1688上货助手 V1.0.8
- 下一篇: 2D游戏入门——小狐狸系列(六)为人物添