## Dokploy: 오픈소스 플랫폼으로 Docker 컨테이너 배포하기
Dokploy는 Docker 컨테이너와 GitHub 저장소에 애플리케이션을 자동 배포하는 오픈소스 도구입니다. 이 플랫폼은 Docker Swarm, 라우팅을 위한 Traefik, 그리고 PostgreSQL/Redis 데이터베이스를 사용합니다. 설치에는 최소 2GB RAM과 30GB 디스크 공간을 가진 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
서버에는 Docker 이미지 빌드를 위해 최소 2GB RAM과 30GB 디스크 공간이 필요합니다. 80(HTTP Traefik), 443(HTTPS Traefik), 3000(웹 인터페이스) 포트가 비어 있어야 합니다—이 포트들이 사용 중이면 설치 스크립트가 실패합니다.
준비:
- 루트로 전환:
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로 루트 권한과 빈 포트를 확인합니다.- Docker가 없으면 설치합니다.
- Proxmox LXC 컨테이너를 감지하고 호환성을 위해
--endpoint-mode dnsrr을 적용합니다. - 서버 IP 주소(IPv4/IPv6: ifconfig.io, icanhazip.com, ipecho.net)를
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)와 /var/run/docker.sock, /etc/dokploy 마운트 및 3000 포트(호스트 모드)를 가진 메인 Dokploy 컨테이너도 동일하게 생성됩니다.
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 포트의 웹 인터페이스를 통해 GitHub에서 프로젝트를 배포하고, 컨테이너를 관리하며 Traefik 라우팅을 설정할 수 있습니다. 이 플랫폼은 외부 종속성 없이 셀프 호스팅 배포에 중점을 두며 Docker Swarm과 통합되어 오케스트레이션을 제공합니다.
중급/시니어 DevOps를 위한 장점:
- 자동 IP 처리(IPv4/IPv6).
- 사용자 지정 Swarm 인수 지원.
- 전체 PaaS 솔루션에 비해 최소 자원 사용.
- Docker 중심의 Coolify 오픈소스 대안.
주요 사항
- 최소 요구 사항: 2GB RAM, 30GB 디스크, 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
아직 댓글이 없습니다.