Supabase 명령어 및 레퍼런스 정리

keem_dev·2024년 12월 27일
0
post-thumbnail

Supabase

레퍼런스

로컬 개발 환경설정

  1. Supabase CLI 설치

  2. Docker Desktop 설치

  3. Deno 설치

  4. supabase 디렉토리로 이동하여 init 명령어 실행

    • Generate VS Code settings for Deno? y 선택
supabase init
  1. 로컬 Supabase 프로젝트 실행
supabase start
  • supabase_vector_supabase container is not ready: unhealthy 에러 시
    config.toml 파일에서 analytics.enabled = false 로 설정

Supabase 명령어

Supabase 실행

supabase start

Supabase 중단

supabase stop

Supabase 상태 확인

supabase status

Supabase 연결 중단

supabase unlink

Supabase 연결

supabase link

supabase 로그인

supabase login

Supabase Edge Functions 배포

엔드포인트는 폴더명(ex.api, test 등)으로 정의됨.
폴더 내 실행 파일명은 index.ts 파일이어야 함.

  • supabase functions 로컬 배포
    • Supabase Edge Functions는 Hot Reload를 지원합니다. 코드에 변경사항이 생겼을때 재배포하지 않아도 서버에 바로 반영됩니다.
    • no-verify-jwt 옵션은 인증 검증을 비활성화합니다.
supabase functions serve --no-verify-jwt
  • Supabase functions public 배포
supabase functions deploy
  • Supabase functions public 배포 중단
supabase functions delete <function-name>

로컬에서 배포 환경 마이그레이션

관련 supabase docs 링크

  1. 마이그레이션 파일 생성
  • 새 마이그레이션 생성
supabase migration new <파일명>
  1. 스키마 및 데이터 덤프 생성
  • 스키마 덤프 (public 스키마만)
supabase db dump -f schema.sql --db-url <local-db-url> --schema=public
  • 데이터 덤프 (public 스키마만)
supabase db dump -f data.sql --data-only  --db-url <local-db-url> --schema=public

3.덤프 내용을 마이그레이션 파일에 복사

cat schema.sql(스키마 덤프 파일명) data.sql(데이터 덤프 파일명) > supabase/migrations/[timestamp]_[파일명].sql
  1. 마이그레이션 적용
supabase db push
  1. Edge Functions
    • 배포 명령어 실행
supabase functions deploy
  1. 스토리지 설정
    • 수동으로 업로드 하거나, 스크립트를 통해 업로드 필요

리모트에서 로컬로 데이터베이스 가져오기

  1. 리모트에서 스키마와 데이터 가져오기
# 스키마 덤프
supabase db dump -f schema.sql --db-url <remote-db-url>
# 혹은 migration 파일 생성
supabase db pull --db-url <remote-db-url>

# 데이터 덤프
supabase db dump -f data.sql --data-only --db-url <remote-db-url>

2.새로운 마이그레이션과 시드 설정

# 스키마를 마이그레이션으로 복사
cp schema.sql supabase/migrations/$(date +%Y%m%d%H%M%S)_init.sql
# 혹은 2번에서 migration 파일을 생성했다면 패스.

# 데이터를 시드로 복사
cp data.sql supabase/seeds/seed.sql

# 로컬 DB 리셋
supabase db reset

Database 명령어

  • 로컬 데이터베이스 리셋
    • seed 파일이 있다면 seed.sql로 복원됨
    • config.toml 파일에서 enabled = false 일 경우 데이터베이스 리셋 안됨
    • enabled = true 일 경우 데이터베이스 리셋 후 seed.sql 파일로 복원
supabase db reset
  • 리모트 데이터베이스 리셋
supabase db reset --db-url <db-url>
  • 프로덕션 db 덤프 생성
supabase db dump -f backup.sql --db-url <db-url>
  • 스키마 덤프 (public 스키마만)
supabase db dump -f schema.sql --db-url <db-url> --schema=public
  • 데이터 덤프 (public 스키마만)
supabase db dump -f data.sql --data-only  --db-url <db-url> --schema=public
  • 새 마이그레이션 생성
supabase migration new <파일명>
  • 덤프 내용을 마이그레이션 파일에 복사
cat schema.sql(스키마 덤프 파일명) data.sql(데이터 덤프 파일명) > supabase/migrations/[timestamp]_[파일명].sql
  • 로컬의 Schema 변경사항을 public supabase로 전달하여 적용
supabase db push
  • 연결된 Public Supabase DB로부터 Schema를 로컬로 가져옴
supabase db pull
  • 데이터베이스의 현재 상태와 마지막 마이그레이션 상태 비교하여 파일로 저장
supabase db diff
# 혹은 파일 이름 명시
supabase db diff -f <파일명>.sql

Edge Functions 명령어

  • 함수 생성
supabase functions new <함수명>

레퍼런스

Auth

Edge Functions

Supabase CLI

CI/CD

Supabase Client Library Reference

환경 분리

supabase git 연동

1개의 댓글

comment-user-thumbnail
6일 전

유익한 내용 잘 읽었습니다 :D

답글 달기