with one click
dokploy
Dokploy 运维管理。部署、停止、启动服务,管理项目和域名。使用 /dokploy 查看状态,/dokploy deploy 部署服务。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Dokploy 运维管理。部署、停止、启动服务,管理项目和域名。使用 /dokploy 查看状态,/dokploy deploy 部署服务。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | dokploy |
| description | Dokploy 运维管理。部署、停止、启动服务,管理项目和域名。使用 /dokploy 查看状态,/dokploy deploy 部署服务。 |
通过 API 管理 Dokploy 服务。
使用前需要先配置服务器信息:
# 添加服务器
node scripts/dokploy.js init --name=myserver --url=https://your-dokploy.com --key=your-api-key
# 可选:配置 Git 代理(用于私有仓库访问)
node scripts/dokploy.js init --git-proxy="https://user:token@proxy.example.com/https://github.com"
# 查看当前配置
node scripts/dokploy.js config
配置文件保存在 ~/.config/dokploy-skill/config.json,权限 0600。
/dokploy [action] [options]
支持配置多个 Dokploy 服务器,通过 --server 参数切换:
# 添加多个服务器
node scripts/dokploy.js init --name=prod --url=https://prod.example.com --key=xxx
node scripts/dokploy.js init --name=staging --url=https://staging.example.com --key=yyy
# 设置默认服务器
node scripts/dokploy.js init --default=prod
# 使用默认服务器
node scripts/dokploy.js list
# 切换到指定服务器
node scripts/dokploy.js --server=staging list
setup-git 命令会根据服务器的 useGitProxy 配置自动决定是否使用 Git 代理。
部署前必须在本地构建成功,再推送代码:
# 1. 本地构建验证
docker compose build
# 2. 本地运行测试(可选)
docker compose up -d
docker compose logs -f
docker compose down
# 3. 构建成功后,提交并推送
git add .
git commit -m "feat: xxx"
git push
# 4. 触发远程部署
node scripts/dokploy.js deploy <composeId>
当部署第三方 Docker 镜像(如 new-api、vaultwarden 等)时,使用 Raw Compose 模式:
3000:3000),会与其他服务冲突dokploy-network 才能被 Traefik 路由services:
app:
image: some/image:latest
restart: always
networks:
- dokploy-network # 必须!Traefik 通过此网络访问服务
- internal # 内部服务通信
environment:
- TZ=Asia/Shanghai
- DATABASE_URL=postgres://user:pass@db:5432/dbname
depends_on:
db:
condition: service_healthy
db:
image: postgres:16-alpine
restart: always
networks:
- internal # 数据库只需内部网络
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=dbname
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d dbname"]
interval: 5s
timeout: 5s
retries: 10
start_period: 10s
networks:
dokploy-network:
external: true # 使用 Dokploy 的外部网络
internal:
driver: bridge # 内部服务通信
volumes:
postgres_data:
| 配置 | 说明 |
|---|---|
dokploy-network: external: true | 必须。连接到 Dokploy 的 Traefik 网络 |
主服务连接 dokploy-network | 必须。否则 Traefik 无法路由,返回 404 |
数据库/Redis 只连接 internal | 安全考虑,内部服务不暴露给 Traefik |
| 不要映射端口 | 不要写 ports: - "3000:3000",让 Traefik 处理 |
| 不要手动添加 Traefik labels | Dokploy 会自动添加,手动添加可能冲突 |
# 1. 创建项目
node scripts/dokploy.js create-project myapp
# 2. 创建 Compose
node scripts/dokploy.js create-compose myapp <envId>
# 3. 设置 Raw Compose(本地文件)
node scripts/dokploy.js set-raw-compose <composeId> ./my-compose.yml
# 4. 添加域名(serviceName 必须与 compose 中的服务名一致)
node scripts/dokploy.js add-domain <composeId> app.example.com 3000 app
# 5. 启用 SSL
node scripts/dokploy.js enable-ssl <domainId>
# 6. 部署
node scripts/dokploy.js deploy <composeId>
port is already allocated原因:docker-compose.yml 直接映射了端口
解决:使用 Raw Compose 模式,移除 ports 配置
hostname resolving error: lookup db原因:服务之间没有在同一个网络中
解决:确保所有需要互相通信的服务都在同一个网络(如 internal)
可能原因:
dokploy-networkserviceName 与 compose 中的服务名不匹配排查步骤:
# 1. 检查部署状态
node scripts/dokploy.js status <composeId>
# 2. 确认域名配置的 serviceName 与 compose 服务名一致
# 3. 确认 compose 中主服务连接了 dokploy-network
原因:域名的 serviceName 为空或不匹配
解决:
node scripts/dokploy.js update-domain <domainId> <正确的服务名>
node scripts/dokploy.js deploy <composeId>
| 操作 | 说明 | 示例 |
|---|---|---|
| (无) | 列出所有项目和服务状态 | /dokploy |
| init | 初始化/更新配置 | /dokploy init --name=dok --url=https://example.com --key=xxx |
| config | 查看当前配置(key 脱敏) | /dokploy config |
| status <id> | 查看指定 Compose 状态 | /dokploy status abc123 |
| deploy <id> | 部署服务 | /dokploy deploy abc123 |
| stop <id> | 停止服务 | /dokploy stop abc123 |
| start <id> | 启动服务 | /dokploy start abc123 |
| logs <id> | 查看部署记录 | /dokploy logs abc123 |
| create-project <name> | 创建新项目 | /dokploy create-project myapp |
| create-compose <name> <envId> | 创建 Compose 服务 | /dokploy create-compose web env123 |
| setup-git <id> <owner/repo> [branch] | 配置 Git 仓库(自动使用代理) | /dokploy setup-git abc123 user/repo main |
| add-domain <id> <host> <port> [service] | 添加域名 | /dokploy add-domain abc123 app.example.com 3000 web |
| enable-ssl <domainId> | 启用 SSL | /dokploy enable-ssl domain123 |
| delete-domain <domainId> | 删除域名 | /dokploy delete-domain domain123 |
| update-domain <domainId> <serviceName> | 更新域名的 serviceName | /dokploy update-domain domain123 web |
| set-raw-compose <id> <file> | 设置 Raw Compose 配置 | /dokploy set-raw-compose abc123 compose.yml |
| create-mysql <name> <envId> <db> <user> | 创建 MySQL 数据库 | /dokploy create-mysql mydb env123 appdb appuser |
| deploy-mysql <mysqlId> | 部署 MySQL | /dokploy deploy-mysql mysql123 |
| mysql-status <mysqlId> | 查看 MySQL 状态 | /dokploy mysql-status mysql123 |
| create-volume <id> <name> <path> | 创建 Volume 挂载 | /dokploy create-volume abc123 app_data /app/data |
| create-bind <id> <host> <path> | 创建 Bind 挂载 | /dokploy create-bind abc123 /data/uploads /app/uploads |
| list-mounts <composeId> | 查看挂载列表 | /dokploy list-mounts abc123 |
使用 Bash 工具执行脚本:
node scripts/dokploy.js <action> [options]
node scripts/dokploy.js
node scripts/dokploy.js deploy <composeId>
# 1. 创建项目
node scripts/dokploy.js create-project myapp
# 2. 创建 Compose(使用返回的 environmentId)
node scripts/dokploy.js create-compose web <envId>
# 3. 配置 Git 仓库(只需 owner/repo,自动使用代理)
node scripts/dokploy.js setup-git <composeId> user/repo main
# 4. 添加域名
node scripts/dokploy.js add-domain <composeId> app.example.com 3000
# 5. 部署
node scripts/dokploy.js deploy <composeId>
Dokploy 支持 Git Webhook 自动部署。配置 Git 仓库后,在 GitHub 仓库设置中添加 Webhook:
推送代码后会自动触发部署。
使用 init 命令配置 Git 代理后,setup-git 会自动处理私有仓库访问:
# 配置代理
node scripts/dokploy.js init --git-proxy="https://user:token@proxy.example.com/https://github.com"
# setup-git 时只需提供 owner/repo 格式
node scripts/dokploy.js setup-git <composeId> myorg/myrepo main
# 自动转换为代理 URL
# 1. 创建 MySQL 数据库(密码自动生成)
node scripts/dokploy.js create-mysql myapp-db <envId> appdb appuser
# 2. 部署 MySQL
node scripts/dokploy.js deploy-mysql <mysqlId>
# 3. 等待 MySQL 启动(约 30 秒)
# 4. 本地导出 SQLite 数据为 SQL
sqlite3 local.db .dump > dump.sql
# 5. 转换 SQLite SQL 为 MySQL 格式
# 6. 通过 Dokploy 控制台或 SSH 导入数据
services:
app:
environment:
- DATABASE_URL=mysql://appuser:password@myapp-db:3306/appdb
depends_on:
- db
db:
image: mysql:8
environment:
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: rootpassword
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
appName(创建时返回)/docker-entrypoint-initdb.d/ 目录会自动执行# 创建命名 Volume(推荐,Docker 管理)
node scripts/dokploy.js create-volume <composeId> app_uploads /app/uploads
# 创建 Bind Mount(映射主机目录)
node scripts/dokploy.js create-bind <composeId> /data/myapp/uploads /app/uploads
| 场景 | 挂载路径 | 说明 |
|---|---|---|
| 用户上传 | /app/uploads | 图片、文件等 |
| 静态资源 | /app/public | 生成的静态文件 |
| 日志文件 | /app/logs | 应用日志 |
| 缓存目录 | /app/cache | 临时缓存 |
| 数据库文件 | /var/lib/mysql | MySQL 数据 |
/var/lib/docker/volumes/,推荐用于数据持久化