도커-컴포즈 프로젝트를 노마드로 배포하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
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 } } } } } ``` ```yaml deploy-searchsync: stage: deploy-searchsync tags: - gcp-master script: - export NOMAD_ADDR=" - nomad job stop searchsync-rawexec || true - nomad job run deploy.hcl ```4. GitLab CI 통합 예시
결론
raw_exec
드라이버를 사용해 docker-compose
프로젝트를 노마드에 배포하는 방식은 복잡한 변환 과정을 피하고, 간단한 git clone + docker-compose up
명령어로 빠르게 실행 가능. 인프라 설정 시 도커 엔진 및 CLI 플러그인 설치가 필수이며, 배포 자동화를 위해 CI/CD 스크립트**를 구성하는 것이 권장됨.