Skip to content

deploy: CD 배포를 CapRover에서 Coolify로 마이그레이션 - #156

Open
tnals0924 wants to merge 1 commit into
developfrom
deploy/#155
Open

tnals0924 wants to merge 1 commit into
developfrom
deploy/#155

Conversation

@tnals0924

@tnals0924 tnals0924 commented Sep 21, 2026 •

Copy link
Copy Markdown
Member

#️⃣연관된 이슈

🎯 해결하려는 문제가 무엇인가요?

현재 CD(배포) 파이프라인이 CapRover에 결합되어 있습니다. 배포 플랫폼을 Coolify로 전환하되, 애플리케이션 런타임과 이미지 빌드 방식은 그대로 두고 배포 트리거만 교체합니다.

❓ 왜 해결해야 하나요?

배포 플랫폼을 Coolify로 이전하기로 했고, 그 전제 조건으로 CD 파이프라인이 Coolify를 바라보게 만들어야 합니다. 이미지 빌드/푸시는 이미 재사용 가능하므로 배포 트리거 지점만 바꾸면 됩니다.

⭐ 어떻게 해결했나요?

  • build-docker-image 잡은 변경 없음 — Gradle 빌드 → Docker Hub push(latest 태그) 그대로 유지. Coolify가 이 이미지를 pull합니다.
  • deploy 잡의 caprover/deploy-from-github 액션을 Coolify API 호출(curl) 로 교체:
    • GET {COOLIFY_URL}/api/v1/deploy?uuid=...&force=true, Authorization: Bearer {COOLIFY_API_TOKEN}
    • prod은 COOLIFY_PROD_RESOURCE_UUID, dev은 COOLIFY_DEV_RESOURCE_UUID 사용
  • latest 태그가 고정이라 이미지 문자열이 안 바뀌므로 force=true로 강제 재-pull, --fail로 실패 시 잡이 실패하도록 처리

🧩 이 PR의 한계 & 트레이드오프

  • latest 태그 유지 — 변경 최소화를 우선해 기존 방식을 유지했습니다. 롤백/추적성이 낮은 대신 force=true로 최신 이미지를 강제 pull합니다. 불변 태그(commit SHA)는 후속 과제.
  • 인프라 수동 작업은 이 PR 범위 밖 — Coolify 리소스 생성, 환경변수·포트·도메인 이관, GitHub Secrets 등록은 코드가 아니라 수동 설정이라 포함되지 않습니다.

⛓️ 기존 기능에 미치는 영향

  • 애플리케이션 코드/런타임 변화 없음. CD 트리거 방식만 변경.
  • 아래 Secrets가 등록되지 않은 상태로 배포가 돌면 deploy 잡이 실패합니다 → 머지·배포 전 등록 필수.
    • 추가: COOLIFY_URL, COOLIFY_API_TOKEN, COOLIFY_PROD_RESOURCE_UUID, COOLIFY_DEV_RESOURCE_UUID
    • 정리(검증 후): CAPROVER_* 5종

🔀 Edge Case & 실패 시나리오

  • Coolify가 401(토큰/권한) 또는 404(UUID 오류) 반환 → --fail로 잡이 실패해 조용한 실패를 방지합니다.
  • latest 이미지 문자열이 불변이라 Coolify가 재-pull하지 않을 수 있음 → force=true로 강제.
  • Docker Hub 리포지토리가 private이면 Coolify에 레지스트리 자격증명이 없을 때 pull 실패 → Coolify 쪽에서 credential 등록 필요.

📋 검토한 대안과 선택 이유

  • 불변 SHA 태그: 추적성/롤백에 유리하나 Coolify가 가리키는 태그를 배포마다 갱신하는 로직이 추가로 필요 → 이번엔 변경 최소화를 위해 latest 유지.
  • 3rd-party Coolify GitHub Action: 외부 의존성/불투명성 → 동작이 명확한 순수 curl 채택.
  • 레지스트리 GHCR 이전: 변경 최소화를 위해 기존 Docker Hub 유지.

💬 리뷰 포인트

  • [r] 머지·배포 전 GitHub Secrets 4종 등록 확인, CapRover 앱은 검증 완료까지 삭제하지 말 것(즉시 롤백 경로).
  • [c] dev → prod 순으로 배포 검증 후 CapRover 앱/Secrets 정리.
  • [a] 배포 검증 시 로컬에서 curl ... /api/v1/deploy?uuid=<DEV_UUID>&force=true로 먼저 200 응답 확인 권장.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BwEtkafDnUZh8TeKrrzuEo

- build-docker-image 잡(Docker Hub, latest 태그)은 그대로 유지
- deploy 잡의 CapRover 액션을 Coolify API(GET /api/v1/deploy?uuid=...&force=true) 호출로 교체
- prod/dev 각각 COOLIFY_PROD_RESOURCE_UUID / COOLIFY_DEV_RESOURCE_UUID 사용

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwEtkafDnUZh8TeKrrzuEo
@tnals0924 tnals0924 self-assigned this Sep 21, 2026
@tnals0924 tnals0924 added the deployment 배포 관련 설정 label Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deployment 배포 관련 설정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI/CD 배포를 CapRover에서 Coolify로 마이그레이션

1 participant