Kamal의 배포는 로컬에서 Git으로부터 최신 코드를 가져와 Docker 이미지를 빌드하는 것으로 시작됩니다. 이 이미지는 Docker Hub 같은 컨테이너 레지스트리에 푸시되며, 이후 Kamal은 SSH를 통해 배포 대상 서버(예: Digital Ocean VPS)에 접속, 이미지를 풀(pull)하고 컨테이너로 실행합니다. config/deploy.yaml
파일에서 서비스 이름, 이미지 이름, 웹 서버 IP 주소 등 핵심 배포 설정을 정의합니다. 컨테이너 레지스트리 인증을 위해 Docker Hub 토큰을 환경 변수로 설정하는 방법이 소개되나, 실제 프로덕션에서는 Vault
나 1Password
같은 안전한 자격 증명 관리 도구 사용이 권장됩니다. Kamal은 사용자 정의 도메인 설정 시 Let’s Encrypt를 통해 무료 SSL 인증서를 자동으로 구성, HTTPS 접속을 용이하게 합니다. SQLite 같은 파일 기반 DB 영속성을 위해 영구 저장소 볼륨 마운트 모범 사례도 제시됩니다. 배포 전 로컬 Docker 설치가 필수적이며, kamal setup
명령 한 번으로 이미지 빌드, 푸시, 서버 설정 및 애플리케이션 실행까지 전 과정이 자동화됩니다. 배포 후에는 kamal logs
, kamal console
, kamal rollback
등으로 애플리케이션을 효과적으로 모니터링 및 관리할 수 있습니다.
Kamal을 활용한 Ruby on Rails 애플리케이션 프로덕션 배포 가이드
Ep 7. Deploy with Kamal | Rails New Tutorial with Typecraft
작성자
Ruby on Rails Youtube
발행일
2025년 07월 16일
핵심 요약
- 1 Kamal은 Rails 8에 내장된 배포 도구로, Ruby on Rails 애플리케이션을 프로덕션 환경에 직접 배포하는 과정을 간소화합니다.
- 2 Docker 이미지를 빌드하고 컨테이너 레지스트리에 푸시한 후, 지정된 서버에 SSH로 접속하여 이미지를 실행하는 방식으로 동작합니다.
- 3 타사 플랫폼 없이 자체 VPS에 배포하며, 무료 SSL 및 영구 스토리지 설정 등 최적의 배포 환경을 구축할 수 있습니다.
도입
이 영상은 Rails 8에 통합된 배포 도구인 Kamal을 활용, Ruby on Rails 애플리케이션을 프로덕션 환경에 배포하는 과정을 상세히 설명합니다. Heroku 등 타사 플랫폼 없이 자체 제어 서버에 직접 배포하는 Kamal의 강점을 부각하며, 효율적이고 안전한 배포 워크플로우를 제시합니다.
결론
Kamal은 Ruby on Rails 개발자가 복잡한 배포 과정을 최소화하고, 자체 인프라를 통해 애플리케이션을 완벽하게 제어할 수 있도록 돕는 혁신적인 도구입니다. Rails의 '설정보다 관례' 철학을 배포 영역까지 확장하여, 개발자가 인프라 세부 사항에 얽매이지 않고 핵심 개발에 집중할 수 있는 환경을 제공합니다. 이는 Rails 생태계의 완성도를 높이며, 효율적이고 안정적인 프로덕션 배포를 가능하게 합니다.