Dokploy: Bereitstellen von Docker-Containern mit einer Open-Source-Plattform
Dokploy ist ein Open-Source-Tool für die automatisierte Bereitstellung von Anwendungen in Docker-Containern und GitHub-Repositories. Die Plattform verwendet Docker Swarm, Traefik für das Routing und PostgreSQL/Redis-Datenbanken. Die Installation erfordert einen Linux-Server mit mindestens 2 GB RAM und 30 GB Festplattenplatz und prüft die Verfügbarkeit der Ports 80, 443, 3000.
Systemanforderungen und Vorbereitung
Dokploy wurde auf folgenden Distributionen getestet:
- Ubuntu 24.04 LTS, 23.10, 22.04 LTS, 20.04 LTS, 18.04 LTS
- Debian 12, 11, 10
- Fedora 40
- CentOS 9, 8
Der Server muss mindestens 2 GB RAM für das Erstellen von Docker-Images und 30 GB Festplattenplatz haben. Die Ports 80 (HTTP Traefik), 443 (HTTPS Traefik) und 3000 (Weboberfläche) müssen frei sein – das Installationsskript schlägt fehl, wenn sie belegt sind.
Vorbereitung:
- Zu root wechseln:
sudo -i. - Dienste auf den Ports 80, 443, 3000 stoppen.
- Sicherstellen, dass Docker installiert ist, andernfalls installiert das Skript Version 28.5.0.
Das Skript erkennt automatisch die Version (Standard: latest, mit Unterstützung für canary/feature über DOKPLOY_VERSION), prüft die Umgebung (Linux, kein Container, kein macOS) und initialisiert Docker Swarm.
Installationsprozess über Skript
Die primäre Methode ist ein Einzeiler-Befehl:
curl -sSL https://dokploy.com/install.sh | sh
Das Skript führt folgende Schritte aus:
- Prüft Root-Rechte und freie Ports mit
ss -tulnp. - Installiert Docker, falls fehlend.
- Erkennt Proxmox LXC-Container und wendet
--endpoint-mode dnsrrfür Kompatibilität an. - Ermittelt die IP-Adresse des Servers (IPv4/IPv6 über ifconfig.io, icanhazip.com, ipecho.net) für
ADVERTISE_ADDR. - Initialisiert Docker Swarm:
docker swarm init --advertise-addr <ip>. - Erstellt das Overlay-Netzwerk
dokploy-network.
Wichtige Skript-Ausschnitte:
# 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
}
Nach der Swarm-Initialisierung werden Dienste erstellt:
docker service create \
--name dokploy-postgres \
--network dokploy-network \
--env POSTGRES_USER=dokploy \
--env POSTGRES_DB=dokploy \
--env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \
postgres:16
Ähnlich für Redis (redis:7) und den Haupt-Dokploy-Container mit Mounts für /var/run/docker.sock, /etc/dokploy und Port 3000 (Host-Modus).
Traefik-Einrichtung und Start
Traefik (v3.6.1) wird separat gestartet:
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
Es verbindet sich mit dokploy-network. Nach einer Wartezeit von 15 Sekunden ist die Oberfläche unter: http://<ip>:3000 verfügbar.
Mögliche Probleme:
- Fehler bei belegten Ports –
ss -tulnp | grep :80für Diagnose verwenden. - In LXC/Proxmox: automatisches Anwenden des dnsrr-Modus.
- Swarm-Initialisierung schlägt fehl –
ADVERTISE_ADDRmanuell setzen oderDOCKER_SWARM_INIT_ARGSfür benutzerdefinierte Pools (z. B.--default-addr-pool 172.20.0.0/16).
Funktionalität nach der Installation
Die Weboberfläche auf Port 3000 ermöglicht das Bereitstellen von Projekten aus GitHub, das Verwalten von Containern und die Konfiguration des Traefik-Routings. Die Plattform konzentriert sich auf selbstgehostete Bereitstellungen ohne externe Abhängigkeiten und integriert sich mit Docker Swarm für die Orchestrierung.
Vorteile für Middle/Senior DevOps:
- Automatische IP-Behandlung (IPv4/IPv6).
- Unterstützung für benutzerdefinierte Swarm-Argumente.
- Minimale Ressourcen im Vergleich zu vollständigen PaaS-Lösungen.
- Open-Source-Alternative zu Coolify mit Fokus auf Docker.
Wichtige Punkte
- Mindestanforderungen: 2 GB RAM, 30 GB Festplatte, Linux (Ubuntu/Debian/Fedora/CentOS).
- Benötigte Ports: 80, 443, 3000 – das Skript blockiert die Installation, wenn belegt.
- Docker Swarm: Auto-Initialisierung mit advertise-addr, LXC dnsrr-Unterstützung.
- Services: Postgres:16, Redis:7, Traefik:v3.6.1, Dokploy:latest/canary/feature.
- Zugriff: http://<server-ip>:3000 nach 15 Sekunden.
— Editorial Team
Noch keine Kommentare.