返回首页

Dokploy:Docker Swarm 平台安装

Dokploy 是一个用于在 Linux 服务器上部署 Docker 容器和 GitHub 项目的平台。描述通过脚本安装:端口检查、Swarm 初始化、启动 Postgres/Redis/Traefik。适合专注于自动化的中高级专家。

快速部署 Dokploy:Docker 和 GitHub 项目
Advertisement 728x90

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 界面)必须空闲——如果被占用,安装脚本将失败。

Google AdInline article slot

准备工作:

  • 切换到 root:sudo -i
  • 停止占用 80、443、3000 端口的服务。
  • 确保已安装 Docker,否则脚本将安装 28.5.0 版本。

脚本会自动检测版本(默认 latest,支持通过 DOKPLOY_VERSION 指定 canary/feature),检查环境(Linux、非容器、非 macOS),并初始化 Docker Swarm。

通过脚本安装过程

主要方法是一行命令:

Google AdInline article slot
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 初始化后,会创建服务:

Google AdInline article slot
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

Advertisement 728x90

继续阅读