Nomad로 Docker-Compose 배포: raw_exec 드라이버 사용 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

도커-컴포즈 프로젝트를 노마드로 배포하는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

개발자 및 DevOps 엔지니어 (중간 난이도)

핵심 요약

  • raw_exec 드라이버 사용: 노마드의 docker-compose 지원 부족을 해결하기 위해 raw_exec를 선택
  • 필수 조건:
  • 타겟 노드에서 Docker 엔진Docker Compose 플러그인 설치
  • Git 액세스 (SSH 키 또는 HTTPS 토큰)
  • deploy.hcl 구성 예시:

```hcl

job "searchsync-rawexec" { ... }

```

섹션별 세부 요약

1. 노마드의 `docker-compose` 지원 문제

  • 노마드는 docker-compose.yml 파일을 직접 해석하지 않음
  • docker-compose를 Nomad 작업으로 변환 시 볼륨 마운트, 제약 조건 오류 등 복잡한 문제 발생
  • 도커 내부 빌드 시도 후 시간 낭비 경험

2. `raw_exec` 드라이버로 대체

  • raw_exec 드라이버를 사용해 도커 엔진이 설치된 노마드 클라이언트 노드에서 docker-compose up --build 실행
  • 자동화된 클론/빌드/실행 가능

3. 노마드 설정 및 `deploy.hcl` 구성

  • 필수 조건:
  • ~/.docker/cli-plugins/docker-compose 파일 수동 설치 및 권한 부여
  • docker compose version 명령어로 v2.x 확인
  • deploy.hcl 예시:

```hcl

job "searchsync-rawexec" {

datacenters = ["dc1"]

type = "batch"

group "searchsync" {

task "bootstrap-searchsync" {

driver = "raw_exec"

config {

command = "/bin/bash"

args = ["-c", <

cd /tmp && git clone git@git.apps.hexmos.com:hexmos/commons/searchsync.git && cd searchsync && docker compose up --build

EOT

constraint {

attribute = "${node.unique.id}"

value = "a02c1701-53ae-1b96-5004-3d70c1227751"

}

resources {

cpu = 500

memory = 512

}

}

}

}

}

```

4. GitLab CI 통합 예시

  • CI/CD 단계:

```yaml

deploy-searchsync:

stage: deploy-searchsync

tags:

- gcp-master

script:

- export NOMAD_ADDR="

- nomad job stop searchsync-rawexec || true

- nomad job run deploy.hcl

```

결론

  • *raw_exec 드라이버를 사용해 docker-compose 프로젝트를 노마드에 배포하는 방식은 복잡한 변환 과정을 피하고, 간단한 git clone + docker-compose up 명령어로 빠르게 실행 가능. 인프라 설정 시 도커 엔진 및 CLI 플러그인 설치가 필수이며, 배포 자동화를 위해 CI/CD 스크립트**를 구성하는 것이 권장됨.