本文将详细介绍如何通过 Dokploy 来部署一个零停机的 Mix Space + Shiroi 博客。

一、准备工作

部署 Dokploy

根据 Dokploy 的 官方安装指南 进行进行安装部署,这里使用的是一键安装脚本:

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

需要注意的是,Dokploy 本身依赖于 Docker,所以如果本机上还没有安装 Docker 的话,这个脚本会帮你自动安装。

除了 80 和 443 端口外,在配置域名之前 Dokploy 还需要使用 3000 端口来访问管理面板,在一般情况下是需要放开的,如果不想放开的话可以参照下一节的处理方式。

配置 Dokploy

如果是为了方便的话,这里可以直接通过 http://服务器IP:3000 的方式来访问管理面板,来进一步进行初始配置,但是毕竟 HTTP 协议都是明文传输的,还是更加推荐使用其他方式。

例如这里要推荐的 Tailscale,只需要将所使用的物理机和需要连接的服务器都添加进自己的账号里,就可以使用 Tailscale 所提供的内网来访问 Dokploy 了,减少了数据泄露的风险。

通过 Tailscale 的 IP 加上 3000 端口,就可以访问到 Dokploy 的管理员帐号创建页面。

注册页面

在成功创建账号后,不要忘了 Settings - Web Server 处配置域名和 SSL 证书。

二、部署 Mix Space 后端服务

Mix Sapce 是前后端分离的博客,这里把前后段的部署分开来写。

通过 Compose 来创建 Mix Space

Home - Projects 处新建一个 Project,名称任意。点击右上角的 Create Service ,我这里命名为 mx-space 了,大家随意。

services:
  app:
    image: innei/mx-server:latest
    environment:
      - TZ=Asia/Shanghai
      - NODE_ENV=production
      - DB_HOST=mongo
      - REDIS_HOST=redis
      - ALLOWED_ORIGINS=localhost
      - JWT_SECRET=YOUR_SUPER_SECURED_JWT_SECRET_STRING
    volumes:
      - mx-data:/root/.mx-space
    networks:
      - mx-space
    healthcheck:
      test: [CMD, curl, -f, 'http://127.0.0.1:2333/api/v2/ping']
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    deploy:
      replicas: 1
      update_config:
        order: start-first
        failure_action: rollback
      restart_policy:
        condition: on-failure

  mongo:
    image: mongo:7
    volumes:
      - mongo-data:/data/db
    networks:
      - mx-space
    deploy:
      replicas: 1

  redis:
    image: redis:alpine
    command: redis-server --appendonly yes --save 60 1
    volumes:
      - redis-data:/data
    networks:
      - mx-space
    deploy:
      replicas: 1

networks:
  mx-space:
    driver: overlay

volumes:
  mx-data:
  mongo-data:
  redis-data:

这里没有使用 Mix Space 文档 里所给出的配置文件,而是进行了一些小改动,主要是为了通过 Swarm 来实现零停机,以及适配 Dokploy。

如果不需要的话还是推荐使用文档里所给的,毕竟这篇文章并不会像文档那样频繁更新。但是由于 Dokploy 在 Redeploy 时会删除整个文件夹,并重新创建一个出来,所以不要忘记加上 volumes,以避免 Redeploy 时丢失数据。也可以通过在 Dokploy 面板里 Service 设置中的 Advanced 选项卡里面的 Volumes 模块来定义。

添加域名

这里推荐使用 双域名 的方式来进行反向代理,这样在 Dokploy 中的配置会更加简洁。

Dokploy 通过 Traefik 来进行反向代理,只需要像下图一样配置就可以了,其中 Host 处的 api.yourdomain.com 换成你自己的域名即可。

点击 Update 后不要忘了 Reload 一下。

至此 Mix Space 后端的部署就完成了,去 api.yourdomain.com/proxy/qaqdmin 进行一下初始化就可以了。

分享这篇文章

分享到 Facebook
分享到 X
分享到 LinkedIn

作者

加入讨论