使用 Dokploy 部署网站服务

之前的几年我一直在使用 K3s + Rancher 的组合来管理网站服务,不过前段时间迁移到了 Dokploy,在这儿记录一下要点。

为什么迁移?

K3s + Rancher 的组合挺好,几年来一直运行稳定,不过对像我这样的非专业运维来说还是有点太复杂了,事实上几年来,我一直只在使用这个组合的一些最基础的功能。

去年看到有人介绍 Dokploy,了解了一下之后,发现它非常适合我的使用场景,同时又足够简单,于是花了一点时间做了研究,并最终决定迁移到 Dokploy。

除了 Dokploy 之外,还有 Coolify 等产品也不错,而且功能更多一些,读者朋友如果有需要也可以试一试。

云服务还是自托管?

Dokploy 提供了云服务,订阅之后可通过他们的云服务管理自己的服务器。

云服务听起来是个不错的选择,可以减少自己运维的时间成本,我也花了 $4.5 订阅了一个月体验了一番。不过 Dokploy 的云服务在海外,我的服务器在国内,两者之间通讯不畅,因此体验并不是很好。

最后,我选择了自托管服务,将 Dokploy 和网站服务安装在同一个网络中。

安装 Dokploy

Dokploy 的安装很简单,在一台干净的服务器上运行以下命令即可:

curl -sSL https://dokploy.com/install.sh | sh

为了确保 Dokploy 能顺利运行,这台服务器建议至少要 2 CPU + 2 G 内存。

如果你的服务器在国内,安装时可能耗时较长,可以添加国内的 docker 镜像,比如修改 /etc/docker/daemon.json 文件,添加以下内容:

{
  "registry-mirrors": [
    "https://docker.1ms.run"
  ]
}

安装完成之后,即可通过 http://{服务器 IP}:3000 的形式访问 Dokploy 后台。

添加服务器

Dokploy 成功安装后,马上就可以开始创建应用。不过,这时创建的应用会和 Dokploy 安装在同一台服务器上,你也可以在 Dokploy 后台添加新的服务器,并将应用添加到新服务器上。

个人建议用一台服务器专门运行 Dokploy,然后在 Remote Servers 面板中添加其他服务器。

添加服务器之后,还需要在 Actions 菜单中点击 Setup Server,并根据提示进行设置。

其中 Deployments 那个步骤可能耗时会很长,可以考虑点击 Modify Script,将脚本复制到对应的服务器上手动执行。

添加服务

添加完服务器之后,就可以添加项目,随后在项目中添加服务了。

添加服务这儿,最重要的一个设置是 Provider,即设置代码的来源。

Dokploy 支持多种常见的源,比如 Github,配置好之后只需向指定仓库和分支推送代码,Dokploy 就会自动拉取并构建代码,就像 Vercel 一样。

对小项目来说,这样的方式自然是很方便的,不过也可以用 Docker 作为 Provider,并使用第三方镜像服务。这样主要有两个好处:

  1. 镜像的构建工作在第三方执行,不会占用线上服务器资源;
  2. 第三方构建镜像时可以打上版本号 tag,后续回滚操作将会很方便。

我使用的是阿里云的容器镜像服务,填写方式类似下图:

更新服务

Dokploy 提供了丰富的 API,几乎所有操作都可以通过 API 完成。当某个服务需要更新时,可以登录网站手动修改相关值,也可以使用 API 更新。

比如,如果一个服务的 Provider 是 Docker,可以用类似下面的请求进行修改:

curl -X "POST" "https://your-dokploy/api/application.saveDockerProvider" \
     -H 'x-api-key: $YOUR_TOKEN' \
     -H 'Content-Type: application/json' \
     -d $'{
  "applicationId": "$APP_ID",
  "dockerImage": "$DOCKER_URL"
}'

有几个注意点:

  1. 授权头信息是 x-api-key: xxx...,而不是常见的 Authorization: Bearer xxx...
  2. applicationId 的值在 URL 中,在界面上暂时没有显示。

比如某个服务的地址是 https://your-dokploy/dashboard/project/aaa/services/application/bbb,地址最后的 bbb 就是 applicationId

通过 API 的方式,可以很方便地将服务的发布、回滚等操作集中到一处管理,或者与你现有的服务集成。

使用小结

使用 Dokploy 已经有一段时间了,整体而言还是很满意的,相对其他方案它很容易上手,且足够稳定,可用于生产环境。

不足是暂时还不支持定时任务,不过可以通过启动一个普通服务并在其中运行定时脚本的方式解决。

如果你有类似的需求,不妨也试一试 Dokploy。

分类:编程标签:DevOps
Electron 中的 Kiosk 窗口

相关文章:

评论:

暂无评论

发表评论: