Kamal 2를 활용한 단일 서버 다중 앱 배포는 다음과 같은 주요 단계를 거쳐 진행됩니다.
1. DigitalOcean Droplet 설정
DigitalOcean에서 Droplet(가상 서버)을 생성하고, 지역, OS, 크기를 선택한 후 SSH 키를 등록합니다. 이후 Droplet의 IP 주소를 확인합니다.
2. 첫 번째 Rails 8 앱 배포 설정
Rails 8 앱은 Kamal이 기본 내장되어 있습니다.
-
config/deploy.yml설정:service,image,servers(Droplet IP),proxy(SSL, 호스트 도메인),registry(Docker Hub 사용자명)를 설정합니다. -
환경 변수 및 DNS: Docker Hub 액세스 토큰을
KAMAL_REGISTRY_PASSWORD로 설정하고, 앱 도메인의 A 레코드를 Droplet IP 주소로 추가합니다. -
배포 실행: 변경사항 커밋 후
kamal setup으로 초기 설정을,kamal deploy로 앱을 배포합니다.
3. 두 번째 앱 배포 설정
두 번째 앱은 gem "kamal"을 추가하고 bin/rails generate kamal:install을 실행합니다.
-
config/deploy.yml설정: 첫 번째 앱과 동일하게 설정하되,proxy.host는 고유한 다른 도메인으로 지정합니다. -
배포 실행: 변경사항 커밋 후
kamal setup및kamal deploy를 실행합니다.
4. Kamal 2의 주요 신기능 및 고려사항
Kamal 2는 새로운 Kamal Proxy를 통해 다중 앱 지원, 카나리 배포, 유지보수 모드, 자동 HTTPS(Let’s Encrypt), 개선된 비밀 관리를 제공합니다. 배포 시 Dockerfile 포트 설정과 서버 RAM 용량 확보에 유의해야 합니다.