Dokploy:使用开源平台部署 Docker 容器
Dokploy 是一个用于 Docker 容器和 GitHub 仓库中应用自动化部署的开源工具。该平台使用 Docker Swarm、Traefik 进行路由,以及 PostgreSQL/Redis 数据库。安装需要一台至少 2 GB 内存和 30 GB 磁盘空间的 Linux 服务器,并检查 80、443、3000 端口的可用性。
系统要求和准备工作
Dokploy 已测试以下发行版:
- Ubuntu 24.04 LTS、23.10、22.04 LTS、20.04 LTS、18.04 LTS
- Debian 12、11、10
- Fedora 40
- CentOS 9、8
服务器必须至少有 2 GB 内存用于构建 Docker 镜像,以及 30 GB 磁盘空间。端口 80(HTTP Traefik)、443(HTTPS Traefik)和 3000(Web 界面)必须空闲——如果被占用,安装脚本将失败。
准备工作:
- 切换到 root:
sudo -i。 - 停止占用 80、443、3000 端口的服务。
- 确保已安装 Docker,否则脚本将安装 28.5.0 版本。
脚本会自动检测版本(默认 latest,支持通过 DOKPLOY_VERSION 指定 canary/feature),检查环境(Linux、非容器、非 macOS),并初始化 Docker Swarm。
通过脚本安装过程
主要方法是一行命令:
curl -sSL https://dokploy.com/install.sh | sh
脚本执行以下步骤:
- 使用
ss -tulnp检查 root 权限和空闲端口。 - 如果缺失则安装 Docker。
- 检测 Proxmox LXC 容器并应用
--endpoint-mode dnsrr以兼容。 - 确定服务器 IP 地址(通过 ifconfig.io、icanhazip.com、ipecho.net 获取 IPv4/IPv6)用于
ADVERTISE_ADDR。 - 初始化 Docker Swarm:
docker swarm init --advertise-addr <ip>。 - 创建覆盖网络
dokploy-network。
关键脚本片段:
# Opredelenie versii
detect_version() {
local version="${DOKPLOY_VERSION:-latest}"
echo "$version"
}
# Check Proxmox LXC
is_proxmox_lxc() {
if [ -n "$container" ] && [ "$container" = "lxc" ]; then
return 0
fi
if grep -q "container=lxc" /proc/1/environ 2>/dev/null; then
return 0
fi
return 1
}
Swarm 初始化后,会创建服务:
docker service create \
--name dokploy-postgres \
--network dokploy-network \
--env POSTGRES_USER=dokploy \
--env POSTGRES_DB=dokploy \
--env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \
postgres:16
类似地,对于 Redis(redis:7)和主 Dokploy 容器,挂载 /var/run/docker.sock、/etc/dokploy,端口 3000(主机模式)。
Traefik 设置和启动
Traefik(v3.6.1)单独启动:
docker run -d \
--name dokploy-traefik \
--restart always \
-v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp \
traefik:v3.6.1
它连接到 dokploy-network。等待 15 秒后,界面可在 http://<ip>:3000 访问。
可能的问题:
- 端口被占用错误——使用
ss -tulnp | grep :80诊断。 - 在 LXC/Proxmox 中:自动应用 dnsrr 模式。
- Swarm 初始化失败——手动设置
ADVERTISE_ADDR或使用DOCKER_SWARM_INIT_ARGS指定自定义池(例如--default-addr-pool 172.20.0.0/16)。
安装后的功能
端口 3000 上的 Web 界面允许从 GitHub 部署项目、管理容器并配置 Traefik 路由。该平台专注于无外部依赖的自托管部署,并与 Docker Swarm 集成用于编排。
中高级 DevOps 工程师的优势:
- 自动处理 IP(IPv4/IPv6)。
- 支持自定义 Swarm 参数。
- 与完整 PaaS 解决方案相比,资源占用最小。
- 专注于 Docker 的 Coolify 开源替代品。
关键要点
- 最低要求: 2 GB 内存、30 GB 磁盘、Linux(Ubuntu/Debian/Fedora/CentOS)。
- 所需端口: 80、443、3000——如果被占用,脚本将阻止安装。
- Docker Swarm: 使用 advertise-addr 自动初始化,支持 LXC dnsrr。
- 服务: Postgres:16、Redis:7、Traefik:v3.6.1、Dokploy:latest/canary/feature。
- 访问: 15 秒后 http://<server-ip>:3000。
— Editorial Team
暂无评论。