使用 Coolify 极简运维你的项目和数据库
使用 Coolify 极简运维你的项目和数据库
引言
本文将介绍一个名为 Coolify 的开源软件,基于 Docker 提供了托管网站、数据库等服务的功能,功能丰富强大,操作简单。官方自称是Heroku / Netlify / Vercel 的开源替代。
我在试用了以后立即决定抛弃之前 nginx proxy manager + docker-compose 的运维方案,全面拥抱 Coolify,因为它真是太好用了。
安装
官网提供了一个简单的安装命令,将自动安装 docker 和 Coolify 的几个必备容器。包括下图中的容器。其中 Traefik 是整个系统的 http 和 https 网关,coolify-server 是软件主体,redis、postgres、soketi 是 coolify 的依赖项。
安装完成后会提示你去访问服务器的 8000 端口,这是 coolify 的 http 端口,我们可以暂时使用它来进行一些基本配置。之后我们会使用 https 去访问它。
配置网关
我们先把 coolify 作为我们的第一个服务,给它配置 https。
coolify 自带的 Traefik 接管了服务器的 80 和 443 端口,这意味着我们不需要接触 docker 网络、ssl 证书等技术细节。
你需要一个自己的域名,假设是example.com
,你需要在你的域名提供商那里把example.com
和*.example.com
解析到这台安装了 coolify 的服务器上。我们之后将会通过子域名来区分部署在这台服务器上的 http 服务。通过example.com:端口
的方式访问部署在这台服务器上的非 http 服务。
然后在下图中的位置输入你想访问 coolify 的域名,点击 Save 保存。
过上半分钟,你就可以使用这个域名安全优雅地访问 coolify 了。
因为 coolify 替你做了 Traefik 配置,并使用 Let‘s Encrypt 替你申请了免费的 ssl 证书。
之后在为 coolify 部署的其他 http 服务配置网关时也是类似的过程,你只需要告诉 coolify 你想使用什么域名访问这个服务,coolify 会替你完成剩下的工作。
部署一个 Nginx
你需要新建一个Project,然后其中一个环境中(默认是 production)添加一个 resource,你可以看到 resource 的种类有很多,你可以为一个 git 仓库配置 cicd,也可以使用现成的 docker 镜像,也可以在下方选择常见的开源软件,例如 MinIO、Redis、MySQL。
我们这里选择使用现成的 docker 镜像。之后两个选项可以都暂时选择 localhost,接下来告诉 coolify 你想要使用nginx:latest
的镜像。
在具体配置页面,你需要指定这个容器提供服务的端口以及你想分配给它的域名。(Domains 有特殊的语法,冒号后面是这个域名指向的容器端口。)然后点击 deploy 就可以开始部署了。
coolify 会创建一个 nginx 容器,并告知 Traefik 你配置的路由规则。
等待部署完成后,你就可以使用https://nginx.example.com
访问nginx 服务了。
你可以通过上面的 Logs 查看容器的日志。
你可以通过按钮来启动、重启、停止、重新部署这个容器。
使用左侧的栏目,你可以进行一些针对这个 nginx 容器的配置,比如数据卷、环境变量、健康检查等。
就像使用 docker 一样!只不过是通过 UI 操作。
部署一个 MySQL
coolify 内置了一些知名开源软件的部署模板,你可以很简单地部署。例如 MySQL。
使用模板的好处就是你可以在页面上直观地修改软件的一些配置,例如数据库的账号密码。
而且 coolify 会贴心地帮你声明这个容器会用到的数据卷,避免在容器的创建和销毁之间丢失数据。
当你启动容器后,点击"make it public available"可以开放 3306 端口,coolify 会新建一个专门用来代理非 http 流量的 nginx容器来将本机的 3306 端口的流量转发至 mysql 容器。(注意区分,这个 nginx 和刚才我们亲手部署的 nginx 不是同一个!)
然后你就可以通过example.com:3306
访问你刚刚部署的 mysql 了。
基于 Git 仓库的 cicd
coolify 不止能部署这些公开的软件,你还可以部署你私有 git 仓库中的服务,并实现“推送即更新”的 cicd。
选择部署一个基于 git 的 resource,你需要授权coolify访问你的 github 账号。
选择部署分支和构建工具(例如使用 Dockerfile构建)。
你会进入一个和之前类似的具体配置页面,你需要指定域名、容器端口、Dockerfile 在项目目录中的位置、要推送的镜像仓库(可选)。然后启用部署。
coolify 会在第一次部署和对应分支有代码提交时自动触发更新。步骤包括:拉取最新代码、在本机或你指定的构建服务器上构建 docker 镜像、推送至你指定的镜像仓库(如果你指定了镜像仓库的话)、更新容器。
构建会占用服务器的带宽、内存、cpu 资源,不如使用 github action 构建那么经济,但是优势是简单:你不需要写 github workflow,不需要有镜像仓库,不需要考虑如何通知服务器拉取最新的镜像。非常适合更新并不频繁的小项目。
总结
本文介绍了 Coolify 的安装以及如何使用 Coolify 部署项目和数据库,并给出了一个简单的基于 git 的服务 cicd 方案。