使用 Coolify 极简运维你的项目和数据库

引言

本文将介绍一个名为 Coolify 的开源软件,基于 Docker 提供了托管网站、数据库等服务的功能,功能丰富强大,操作简单。官方自称是Heroku / Netlify / Vercel 的开源替代。

我在试用了以后立即决定抛弃之前 nginx proxy manager + docker-compose 的运维方案,全面拥抱 Coolify,因为它真是太好用了。

安装

官网提供了一个简单的安装命令,将自动安装 docker 和 Coolify 的几个必备容器。包括下图中的容器。其中 Traefik 是整个系统的 http 和 https 网关,coolify-server 是软件主体,redis、postgres、soketi 是 coolify 的依赖项。

image-20240524194809715

安装完成后会提示你去访问服务器的 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 保存。

image-20240524192342080

过上半分钟,你就可以使用这个域名安全优雅地访问 coolify 了。

因为 coolify 替你做了 Traefik 配置,并使用 Let‘s Encrypt 替你申请了免费的 ssl 证书。

image-20240524194734181

之后在为 coolify 部署的其他 http 服务配置网关时也是类似的过程,你只需要告诉 coolify 你想使用什么域名访问这个服务,coolify 会替你完成剩下的工作。

部署一个 Nginx

你需要新建一个Project,然后其中一个环境中(默认是 production)添加一个 resource,你可以看到 resource 的种类有很多,你可以为一个 git 仓库配置 cicd,也可以使用现成的 docker 镜像,也可以在下方选择常见的开源软件,例如 MinIO、Redis、MySQL。

image-20240524200759521

我们这里选择使用现成的 docker 镜像。之后两个选项可以都暂时选择 localhost,接下来告诉 coolify 你想要使用nginx:latest的镜像。

在具体配置页面,你需要指定这个容器提供服务的端口以及你想分配给它的域名。(Domains 有特殊的语法,冒号后面是这个域名指向的容器端口。)然后点击 deploy 就可以开始部署了。

image-20240524193725476

coolify 会创建一个 nginx 容器,并告知 Traefik 你配置的路由规则。

image-20240524194412900

等待部署完成后,你就可以使用https://nginx.example.com访问nginx 服务了。

你可以通过上面的 Logs 查看容器的日志。

你可以通过按钮来启动、重启、停止、重新部署这个容器。

使用左侧的栏目,你可以进行一些针对这个 nginx 容器的配置,比如数据卷、环境变量、健康检查等。

就像使用 docker 一样!只不过是通过 UI 操作。

部署一个 MySQL

coolify 内置了一些知名开源软件的部署模板,你可以很简单地部署。例如 MySQL。

image-20240524195257880

image-20240524195445329

使用模板的好处就是你可以在页面上直观地修改软件的一些配置,例如数据库的账号密码。

而且 coolify 会贴心地帮你声明这个容器会用到的数据卷,避免在容器的创建和销毁之间丢失数据。

当你启动容器后,点击"make it public available"可以开放 3306 端口,coolify 会新建一个专门用来代理非 http 流量的 nginx容器来将本机的 3306 端口的流量转发至 mysql 容器。(注意区分,这个 nginx 和刚才我们亲手部署的 nginx 不是同一个!)

image-20240524200018058

然后你就可以通过example.com:3306访问你刚刚部署的 mysql 了。

基于 Git 仓库的 cicd

coolify 不止能部署这些公开的软件,你还可以部署你私有 git 仓库中的服务,并实现“推送即更新”的 cicd。

image-20240524200825312

选择部署一个基于 git 的 resource,你需要授权coolify访问你的 github 账号。

选择部署分支和构建工具(例如使用 Dockerfile构建)。

你会进入一个和之前类似的具体配置页面,你需要指定域名、容器端口、Dockerfile 在项目目录中的位置、要推送的镜像仓库(可选)。然后启用部署。

coolify 会在第一次部署和对应分支有代码提交时自动触发更新。步骤包括:拉取最新代码、在本机或你指定的构建服务器上构建 docker 镜像、推送至你指定的镜像仓库(如果你指定了镜像仓库的话)、更新容器。

构建会占用服务器的带宽、内存、cpu 资源,不如使用 github action 构建那么经济,但是优势是简单:你不需要写 github workflow,不需要有镜像仓库,不需要考虑如何通知服务器拉取最新的镜像。非常适合更新并不频繁的小项目。

总结

本文介绍了 Coolify 的安装以及如何使用 Coolify 部署项目和数据库,并给出了一个简单的基于 git 的服务 cicd 方案。

文章作者: 白烛魁
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 白烛魁的小站
Docker 运维
喜欢就支持一下吧