홈으로 돌아가기

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 데이터베이스를 사용합니다. 설치에는 최소 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(웹 인터페이스) 포트가 비어 있어야 합니다—이 포트들이 사용 중이면 설치 스크립트가 실패합니다.

Google AdInline article slot

준비:

  • 루트로 전환: 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로 루트 권한과 빈 포트를 확인합니다.
  • 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 초기화 후 서비스가 생성됩니다:

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)와 /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

Advertisement 728x90

다음 읽기