vercel开源平替,dokploy简简单单了解国内安装指南

Dokploy 是一个自托管的 Vercel 替代方案,提供了与 Vercel 类似的自动化部署服务,但允许开发者在自己的服务器或虚拟私有服务器(VPS)上进行部署。它适用于前端应用(如 React、Vue、Next.js 等)的部署,特别是对于想要掌控整个部署过程的开发者,Dokploy 是一个很好的选择。

以下是Dokploy 在国内环境下的安装与使用指南,包含从最基本到深度使用的详细解读,结合具体代码示例进行讲解。

1. 基本安装与配置

1.1 环境准备

首先确保你的服务器具备以下环境:

  • 操作系统:Ubuntu 20.04+ 或类似的 Linux 系统
  • Docker:用于容器化部署
  • Docker Compose:用于定义和管理多容器的应用
1.2 安装 Docker 和 Docker Compose

在 Ubuntu 系统中,可以使用以下命令安装 Docker 和 Docker Compose:

# 更新包列表并安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io

# 安装 Docker Compose
sudo apt-get install -y docker-compose

确保 Docker 和 Docker Compose 安装成功:

docker --version
docker-compose --version
1.3 克隆 Dokploy 仓库

从 GitHub 上克隆 Dokploy 项目源码:

git clone https://github.com/Dokploy/dokploy.git
cd dokploy
1.4 配置 Dokploy

Dokploy 使用 Docker 来容器化部署服务。你需要配置一些环境变量,来指定部署相关的配置。首先,复制一份默认配置文件:

cp .env.example .env

然后编辑 .env 文件,主要配置如下:

  • GITHUB_TOKEN:用于从 GitHub 获取仓库的权限。
  • GITHUB_REPO:你的 GitHub 仓库地址。
  • DEPLOY_PORT:Dokploy 部署的端口。

2. 使用 Dokploy 部署应用

2.1 创建 Dockerfile

假设你有一个基于 Next.js 的应用,你需要在应用根目录创建一个 Dockerfile 来指定如何构建和运行这个应用。

# 使用 Node.js 官方镜像作为基础镜像
FROM node:18

# 设置工作目录
WORKDIR /app

# 将本地的 package.json 和 package-lock.json 拷贝到容器中
COPY package*.json ./

# 安装应用依赖
RUN npm install

# 将应用的源码拷贝到容器中
COPY . .

# 暴露容器端口
EXPOSE 3000

# 启动应用
CMD ["npm", "run", "start"]
2.2 创建 Docker Compose 文件

docker-compose.yml 用于定义应用的服务。对于一个简单的 Next.js 应用,可以如下配置:

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
2.3 启动应用

使用 docker-compose 来启动容器:

docker-compose up -d

这会根据你定义的 Dockerfiledocker-compose.yml 来构建容器并启动应用。

3. 配置 GitHub 自动化部署

Dokploy 支持与 GitHub 仓库的集成,当代码推送到仓库时,Dokploy 可以自动触发部署。

  1. .env 文件中配置 GitHub 仓库和 token:
GITHUB_REPO=your-username/your-repo
GITHUB_TOKEN=your-github-token
  1. 每次代码变动时,Dokploy 会自动拉取最新代码并构建应用,重新部署。
3.1 配置 GitHub Webhook

为了让 GitHub 与 Dokploy 进行通信,你需要在 GitHub 上配置一个 Webhook。当你推送代码时,GitHub 会通知 Dokploy 进行自动部署。

  1. 登录 GitHub,进入你的仓库设置页面。
  2. 找到 Webhooks,点击 Add webhook
  3. 配置 Webhook URL 为你的 Dokploy 服务器地址(例如:http://your-dokploy-server.com/deploy)。
  4. 选择 Just the push event
3.2 完成部署

每次你向 GitHub 推送代码时,Dokploy 会自动拉取代码并重新部署应用。你可以通过 Docker 容器查看部署日志,确保应用部署成功。

docker logs <container-id>

4. 深度使用与优化

4.1 负载均衡与多容器支持

如果你需要处理高流量的应用,可以使用 Nginx 作为反向代理并做负载均衡。你可以将多个服务定义在 docker-compose.yml 中,并通过 Nginx 配置来实现负载均衡。

version: '3'
services:
  app1:
    build: .
    ports:
      - "3001:3000"
  
  app2:
    build: .
    ports:
      - "3002:3000"

  nginx:
    image: nginx:alpine
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - "80:80"
    depends_on:
      - app1
      - app2

nginx.conf 配置如下:

http {
    upstream app_backend {
        server app1:3000;
        server app2:3000;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://app_backend;
        }
    }
}
4.2 配置 HTTPS

在生产环境中,建议使用 HTTPS 来加密流量。你可以使用 Let’s Encrypt 或其他 SSL 提供商的证书来为你的应用配置 HTTPS。

  1. 安装并配置 Certbot,自动获取和续期 SSL 证书。
  2. 修改 nginx.conf 来配置 HTTPS:
server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    location / {
        proxy_pass http://app_backend;
    }
}
  1. 重启 Nginx 服务:
docker-compose restart nginx
4.3 日志与监控

对于大规模应用,日志和监控非常重要。Dokploy 支持集成日志系统(如 ELK Stack 或 Prometheus)来跟踪应用的运行状态。

可以将日志导出到标准输出并进行集中管理:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

5. 总结

通过 Dokploy,开发者可以拥有 Vercel 类似的自动化部署体验,同时也能够在自己的服务器上托管应用。它提供了与 GitHub 集成、Docker 容器化部署、负载均衡、HTTPS 配置等功能,非常适合希望控制部署过程和基础设施的开发者。通过上述步骤,你可以从最基础的安装使用到深度定制化应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的沙粒

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值