Kamal 2가 바꾼 배포 경험

Rails 8과 함께 출시된 Kamal 2는 Docker 기반 제로 다운타임 배포를 deploy.yml 하나로 해결한다. Vultr Seoul $5/mo 인스턴스(1 vCPU, 1GB RAM)에서도 충분히 프로덕션을 운영할 수 있다.

핵심 설정

proxy:
  ssl: true
  host: locarb.dev

kamal-proxy가 Let’s Encrypt SSL을 자동으로 발급하고 갱신한다. Nginx 설정이 필요 없다.

시크릿 관리

.kamal/secrets에서 Doppler adapter를 사용하면 시크릿이 코드에 노출되지 않는다:

kamal secrets fetch --adapter doppler --from project/prd

실전 팁

  • kamal deploy 전에 반드시 git commit — Kamal은 git clone에서 빌드한다
  • DB 비밀번호는 고정값 사용 — PostgreSQL 초기화 후 변경 불가
  • kamal logs가 느리면 SSH 직접 접속: ssh root@<IP> "docker logs <container> 2>&1 | tail -50"