如何使用 GitHub 和 Docker 进行自动部署
前置知识 会简单用一下 docker 以及 docker-compose 知道 github actions 以及会用 以及一点点 linux 操作的基础,可以 这里 了解下 背景 作为一个前端er,大多数场景下交付的都是纯静态的东西(html, js, css),可能对于服务部署自动化这块不是特别敏感,随便找个环境 build 下,拿到 dist 文件夹丢到服务器上就完事了。再高级一点的,可能有用到各种 SSX 的,或者还有点 serverless 的,还有个 vercel 这个特别好用的平台供我们使用,简直太强大,纯前端的常规操作,或者配合一些调用第三方数据接口的操作,vercel 一把梭,最多加个 serverless 函数转发下避免跨域之类的问题。比如 ChatGPT 的各种套壳,部署在 vercel 上占大多数。 但是,如果你是一个后端er,或者是一个全栈,那么你可能会有一些服务端的东西需要部署,比如一些数据库,中间件等,这些似乎在 vercel 上就不能直接搞定了,虽然他们目前也有在计划 Storage 这个东西,尤其对于版本帝的 nodejs 应用来说,可能不用项目需要的基础环境不一样,按照常规的做法可能需要不同的服务器去做这种环境隔离的事情了。其实对于预算充足的来说,这都不是问题,那么现在要介绍的一种就是如何在极限环境下,去做这种多应用部署,方便自己实验。 介绍 对于文中实验场景,唯一可能需要付钱的部份是一台低配的服务器,毕竟 github 的 action 不能和本地通信?(如果你有固定 ip 其实也可以)比如本文中使用的是一台腾讯云上的【标准型SA2 - 2核 2G】的服务器,买了三年千把块,算是很便宜了,装的系统是【 TencentOS Server 3.1 (TK4)】,默认自带了 docker,还做了一些镜像源上的配置,其实自己去安装个也很方便,记得改下镜像源。 需要准备的所有东西包括: 一台云服务器 一个镜像仓库 一个 github 仓库 为什么需要一个镜像仓库,目前很多基础仓库其实都在公开的镜像仓库上,比如 dockerhub,但是对于自己应用的镜像制品,不适合放到公开仓库里。网上也有很多搭建的教程比如 How To Set Up a Private Docker Registry on Ubuntu 22....