Dokploy 是一款开源的自托管 PaaS(平台即服务),可以在自己的服务器上搭建类似 Vercel/Heroku 的部署平台。支持 Git 自动部署、Docker 应用、数据库管理,是个人开发者和小团队的理想选择。
本文基于 Dokploy v0.8.x 编写。
为什么选择 Dokploy#
| 特性 | 说明 |
|---|---|
| 完全开源 | MIT 协议,免费使用 |
| 自托管 | 数据完全掌控,无供应商锁定 |
| 简单易用 | Web UI 管理,无需复杂命令 |
| 资源高效 | 单机即可运行,低配服务器友好 |
| 功能完整 | 应用、数据库、域名、SSL 一站式管理 |
服务器要求#
最低配置:
- 1 核 CPU- 1 GB 内存- 10 GB 磁盘- Ubuntu 20.04+ / Debian 11+推荐配置(生产环境):
- 2 核 CPU- 4 GB 内存- 40 GB SSD安装 Dokploy#
一键安装#
SSH 登录服务器,执行:
curl -sSL https://dokploy.com/install.sh | sh安装完成后,访问 http://服务器IP:3000 进入管理界面。
Docker 安装#
docker run -d \ --name dokploy \ -p 3000:3000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v dokploy-data:/app/data \ dokploy/dokploy:latest初始设置#
- 访问管理界面
- 创建管理员账号
- 配置服务器信息
部署应用#
Git 仓库部署#
- 项目 → 新建应用 → Git
- 配置仓库地址和分支
- 设置构建命令和启动命令
- 部署
配置示例(Next.js):
构建命令: npm install && npm run build启动命令: npm start端口: 3000Dockerfile 部署#
支持自定义 Dockerfile:
FROM node:20-alpineWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run buildEXPOSE 3000CMD ["npm", "start"]Docker Compose 部署#
对于复杂应用,支持 Docker Compose:
version: '3.8'services: app: build: . ports: - '3000:3000' environment: - DATABASE_URL=${DATABASE_URL} depends_on: - db db: image: postgres:15 environment: - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data
volumes: pgdata:预构建镜像#
直接部署 Docker Hub 镜像:
镜像: nginx:latest端口: 80数据库服务#
Dokploy 内置数据库管理:
PostgreSQL#
1. 数据库 → 新建 → PostgreSQL2. 设置用户名、密码、数据库名3. 创建并获取连接信息连接字符串:
postgres://user:password@localhost:5432/dbnameMySQL#
1. 数据库 → 新建 → MySQL2. 配置参数3. 获取连接信息Redis#
1. 数据库 → 新建 → Redis2. 设置密码3. 获取连接信息MongoDB#
1. 数据库 → 新建 → MongoDB2. 配置认证3. 获取连接 URI域名与 SSL#
配置域名#
- 应用设置 → 域名
- 添加自定义域名
- 配置 DNS 指向服务器 IP
DNS 记录:
类型: A名称: @值: 服务器IP自动 SSL#
Dokploy 集成 Let’s Encrypt,自动申请和续期证书:
应用设置 → 域名 → 启用 HTTPS通配符证书#
支持申请 *.example.com 通配符证书,需要配置 DNS 验证。
环境变量#
应用级变量#
应用设置 → 环境变量DATABASE_URL=postgres://...API_KEY=sk-xxxxxNODE_ENV=production全局变量#
可在多个应用间共享:
设置 → 全局变量变量引用#
支持引用数据库连接信息:
DATABASE_URL={{postgres.url}}REDIS_URL={{redis.url}}持续部署#
Webhook 自动部署#
每个应用提供 Webhook URL:
应用设置 → 部署 → Webhook URL在 GitHub 仓库设置中添加 Webhook。
分支自动部署#
可配置特定分支触发部署:
main → 生产环境develop → 测试环境监控与日志#
应用日志#
应用详情 → 日志实时查看应用输出。
资源监控#
应用详情 → 监控查看 CPU、内存、网络使用。
部署历史#
应用详情 → 部署记录支持查看历史部署和回滚。
备份#
数据库备份#
数据库 → 备份 → 创建备份支持定时自动备份。
导出配置#
设置 → 导出配置备份所有应用和数据库配置。
高级配置#
资源限制#
为每个应用设置资源限制:
CPU: 1 核内存: 512 MB健康检查#
配置健康检查确保应用可用:
路径: /api/health间隔: 30 秒超时: 10 秒自定义启动#
使用 Procfile 定义启动方式:
web: npm startworker: npm run workerDokploy vs Coolify vs CapRover#
| 特性 | Dokploy | Coolify | CapRover |
|---|---|---|---|
| 安装难度 | 简单 | 中等 | 中等 |
| 资源占用 | 低 | 中 | 中 |
| UI 设计 | 现代 | 现代 | 传统 |
| 数据库管理 | ✅ | ✅ | ✅ |
| Docker Compose | ✅ | ✅ | ❌ |
| 团队协作 | 有限 | ✅ | ✅ |
| 社区活跃度 | 增长中 | 活跃 | 活跃 |
选择建议:
- 低配服务器、个人使用 → Dokploy
- 功能完整、团队协作 → Coolify
- 稳定可靠、长期维护 → CapRover
最佳实践#
1. 使用 Dockerfile#
明确定义构建过程,避免环境差异:
FROM node:20-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run build
FROM node:20-alpineWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/node_modules ./node_modulesEXPOSE 3000CMD ["node", "dist/index.js"]2. 配置健康检查#
确保应用真正可用后再路由流量。
3. 定期备份#
配置自动备份,尤其是数据库。
4. 使用反向代理#
生产环境建议在前面加 Nginx/Caddy。
常见问题#
部署失败#
- 检查构建日志
- 确认 Dockerfile 语法正确
- 检查端口配置
无法访问应用#
- 确认服务器防火墙开放端口
- 检查域名 DNS 配置
- 查看应用日志
SSL 证书申请失败#
- 确认域名已正确解析
- 检查 80/443 端口可访问
- 查看 Let’s Encrypt 日志
Dokploy 自托管部署指南