Github CI + Docker 实现部署到远程服务器
About 2 min
技术选型
- markdown
- vuepress
- Github actions
- Docker
- 阿里云轻量级服务器
思路
博客文档部分采用 markdown 进行编写,将github仓库作为我们的文章数据源,使用 vuepress 对文章进行静态文件编译,借助 Github actions 将编译好的静态文件作为镜像推送到Docke Hub上,推送成功后Github actions通知云服务器进行Docke更新,云服务器将更新后的Docker 镜像做为容器运行并提供web服务
flowchart BT
local(本地代码)
web(web页面)
subgraph githubServer [github actions]
direction LR
github([github仓库])
githubIC([github actions\n对代码进行构建])
end
docker(docker镜像仓库)
server([远端服务器])
local-->|推送|github
github-->|触发|githubIC
githubIC-->|推送镜像|docker
githubIC-->|提醒更新|server
server<-->|获取更新|docker
server-->|提供web服务|web
疑问
为什么选择 markdown?
- 拜托!markdown真的超好用的好吧,我真的爱死mardown了_(:з」∠)_
采用vuepress编译为静态文件的好处
- 首先我们只编写
markdown文件并 push 到git远端库上,这样保证了我们文档笔记的安全性,你也不想你写了很久的笔记因为服务器到期或者其他原因突然离你而去对吧?而且这样我们不用考虑后端交互,只专注于markdown文档编写,vuepress会帮我搞定一切 - 并且因为最终编译为静态文件这便于了我们网站在SEO方面的优化,最后我们只要配置好我们的
Github actions我们就可以很方便的对我们的博客内容进行推送
为什么不直接通过scp将静态文件推送到云服务上?
- 我想你也跟我一样,会担心某天想更换一个服务商,导致我们要更换服务器,这时我们的服务变更导致的重装系统时,我们往往需要根据不同的服务器进行环境配置,这使得我们的系统迁移变得很笨重,如果我们将系统打包成为
Docker镜像,我们就只需要想下载软件一样安装Docker并运行就好了