본문 바로가기

프로젝트/라이트하우스

[Spring] supabase를 spring 프로젝트에 연결하기

supabase는 공짜로 사용할 있잖아요? 그래서 이점이 있는데, 

저는 supabase의 client를 사용하고 싶지는 않았습니다. 

그래서 그냥 supabase가 postgresql 기반이기도하고, db url만 가져와서 사용하기로 했숩니다.

 

먼저, supabase에서 프로젝트를 만들구요. 프로젝트에 들어간 다음 저기 connect 버튼을 눌러줍니다. 

 

 

그러면, 아래와 같이 

project에 연결하기 위한 url들이 나타나요. 저는 JDBC url를 가져와서 사용햇숩니다.

 

해당 url를 복사한 후, 

application.yml 파일에 

 

spring:
  datasource:
    url: jdbc:postgresql://aws-0-ap-northeast-2.pooler.supabase.com:6543/postgres
    username: {username}
    password: {password}
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect

 

요렇게 쏙 넣어줍니다. 

그런다음 실행하면 되어요! 



저는 docker-compose를 이용해서 프로젝트를 실행시켰는디요, 

# 빌드 스테이지
FROM gradle:8.5-jdk17 AS build
WORKDIR /home/gradle/src
COPY --chown=gradle:gradle . .
RUN gradle build --no-daemon

# 실행 스테이지
FROM openjdk:17-jdk-slim

# 작업 디렉토리 설정
WORKDIR /app

# 빌드 스테이지에서 생성된 JAR 파일 복사
COPY --from=build /home/gradle/src/build/libs/*.jar app.jar

# 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]

# 앱이 실행될 포트
EXPOSE 8080

이렇게 도커 파일을 만들어주고, 

version: '3.8'

services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/lighthouse_community
      - SPRING_DATASOURCE_USERNAME={}
      - SPRING_DATASOURCE_PASSWORD={}
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=lighthouse_community
      - POSTGRES_USER={}
      - POSTGRES_PASSWORD={}
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

이렇게 컴포즈 파일을 만들어 준 다음, 

 


docker-compose up --build 명령어를 실행하면! 

이렇게 이쁘게 잘 실행된 모습을 확인할 수 있습니다.