Dokploy: wdrażanie kontenerów Docker za pomocą platformy open-source
Dokploy to open-source narzędzie do zautomatyzowanego wdrażania aplikacji w kontenerach Docker i repozytoriach GitHub. Platforma wykorzystuje Docker Swarm, Traefik do routingu oraz bazy PostgreSQL/Redis. Instalacja wymaga serwera Linux z minimum 2 GB RAM i 30 GB dysku, sprawdza dostępność portów 80, 443, 3000.
Wymagania systemowe i przygotowanie
Dokploy przetestowany na dystrybucjach:
- Ubuntu 24.04 LTS, 23.10, 22.04 LTS, 20.04 LTS, 18.04 LTS
- Debian 12, 11, 10
- Fedora 40
- CentOS 9, 8
Serwer musi mieć co najmniej 2 GB pamięci RAM do budowania obrazów Docker i 30 GB miejsca na dysku. Porty 80 (HTTP Traefik), 443 (HTTPS Traefik), 3000 (interfejs webowy) muszą być wolne — skrypt instalacyjny zakończy się błędem, jeśli są zajęte.
Przygotowanie:
- Przejdź do trybu root:
sudo -i. - Zatrzymaj usługi na portach 80, 443, 3000.
- Upewnij się, że Docker jest zainstalowany, w przeciwnym razie skrypt zainstaluje wersję 28.5.0.
Skrypt automatycznie wykrywa wersję (domyślnie latest, obsługa canary/feature poprzez DOKPLOY_VERSION), sprawdza środowisko (Linux, nie kontener, nie macOS) i inicjuje Docker Swarm.
Proces instalacji za pomocą skryptu
Główny sposób — jednolinijkowe polecenie:
curl -sSL https://dokploy.com/install.sh | sh
Skrypt wykonuje następujące kroki:
- Sprawdza prawa root i wolne porty za pomocą
ss -tulnp. - Instaluje Docker, jeśli nie jest obecny.
- Wykrywa kontenery Proxmox LXC i stosuje
--endpoint-mode dnsrrdla kompatybilności. - Określa adres IP serwera (IPv4/IPv6 za pomocą ifconfig.io, icanhazip.com, ipecho.net) dla
ADVERTISE_ADDR. - Inicjuje Docker Swarm:
docker swarm init --advertise-addr <ip>. - Tworzy sieć overlay
dokploy-network.
Kluczowe fragmenty skryptu:
# 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
}
Po Swarm tworzone są serwisy:
docker service create \
--name dokploy-postgres \
--network dokploy-network \
--env POSTGRES_USER=dokploy \
--env POSTGRES_DB=dokploy \
--env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \
postgres:16
Podobnie dla Redis (redis:7) i głównego kontenera Dokploy z montowaniem /var/run/docker.sock, /etc/dokploy, portem 3000 (tryb host).
Konfiguracja Traefik i uruchomienie
Traefik (v3.6.1) uruchamiany jest oddzielnie:
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
Podłączany do dokploy-network. Po 15 sekundach oczekiwania dostępny jest interfejs: http://<ip>:3000.
Możliwe problemy:
- Błąd na zajętych portach — użyj
ss -tulnp | grep :80do diagnozy. - W LXC/Proxmox: automatyczne stosowanie trybu dnsrr.
- Swarm nie inicjuje się — ustaw
ADVERTISE_ADDRręcznie lubDOCKER_SWARM_INIT_ARGSdla niestandardowych pul (np.--default-addr-pool 172.20.0.0/16).
Funkcjonalność po instalacji
Interfejs webowy na porcie 3000 pozwala na wdrażanie projektów z GitHub, zarządzanie kontenerami, konfigurację routingu Traefik. Platforma skierowana na self-hosted wdrożenia bez zewnętrznych zależności, integruje się z Docker Swarm do orkiestracji.
Zalety dla middle/senior DevOps:
- Automatyczna obsługa IP (IPv4/IPv6).
- Obsługa niestandardowych argumentów Swarm.
- Minimalne zasoby w porównaniu do pełnych PaaS.
- Open-source alternatywa dla Coolify z naciskiem na Docker.
Co ważne
- Minimalne wymagania: 2 GB RAM, 30 GB dysk, Linux (Ubuntu/Debian/Fedora/CentOS).
- Obowiązkowe porty: 80, 443, 3000 — skrypt blokuje instalację przy zajętości.
- Docker Swarm: Autoinicjalizacja z advertise-addr, obsługa LXC dnsrr.
- Usługi: Postgres:16, Redis:7, Traefik:v3.6.1, Dokploy:latest/canary/feature.
- Dostęp: http://<server-ip>:3000 po 15 s.
— Editorial Team
Brak komentarzy.