avatar
Octoping Blog

Spring 서버 Render로 공짜로 배포해보기 (feat. Docker)

공짜로 스프링 서버를 배포하고 배포 자동화도 경험해보자
SpringRender배포
Jun 19
·
6 min read

서론

프론트엔드 진영은 Vercel, Netlify, Github Page 등과 같은 서비스들의 등장으로 날이 갈 수록 프로젝트를 배포해보기가 쉬워지고 있습니다.

하지만 백엔드 진영은 아직 영 신통치 않은게 사실이라, 많이들 눈물을 삼키며 AWS Free Tier를 사용하고 있는 형국인데요. 그래도 Oracle에서 평생 무료 클라우드 인스턴스 2개를 지원하는 등, 공짜 배포 방법을 찾으려면 찾을 수 있습니다. 그래도 역시 Github 연동 배포 자동화도 쉽게 쉽게 해주는 Vercel 이 부럽기만 한 상황입니다.

하지만 아직 세상은 살만한가 봅니다. Render라고 하는 곳에서, 웹 서버 배포를 쉽게 도와주는 서비스를 제공하고 있습니다.

한번 Spring 서비스를 Render라는 곳에 배포하는 방법을 알아보겠습니다.

배포해보기

1. Dockerfile 만들기

먼저, Github에 코드를 올려둔 Spring Boot 프로젝트가 있어야 합니다. 꼭 깃허브를 통해 배포할 필요는 없지만 그 방법까지 다루진 않겠습니다.

Render는 기본적으로 Spring 서비스를 그대로 올릴 수는 없어서, Docker로 배포해야 합니다. 프로젝트 소스 최상단에 Dockerfile을 만들어봅시다.

FROM gradle:jdk17-jammy AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon
LABEL org.name="hezf"

Render는 Vercel처럼 Github에 push가 진행되었을 때 dockerfile로 빌드를 시도합니다. 따라서 Dockerfile으로 docker build를 실행했을 때 gradle build를 한 후, 그 jdk 파일을 가지고 도커라이징을 하는 과정을 거쳐야 합니다.

저는 JDK 17 기반의 프로젝트이므로 gradle:jdk17-jammy 를 사용했습니다. 다른 JDK 버전을 사용하셨다면 알맞게 수정하시길 바래요.

FROM eclipse-temurin:17-jdk-jammy
COPY --from=build /home/gradle/src/build/libs/kw-duo-0.0.1.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

그 밑에 이어서 작성합니다.

빌드를 성공했다면 그 jar 파일을 실행도 해줘야겠죠. 빌드된 jar 파일을 app.jar 라는 이름으로 도커에 복사해줍니다. 그리고 마지막으로 java -jar /app.jar 명령어로 실행해주는 과정입니다.

여기서도 JDK 버전을 알맞게 맞춰주시고, 빌드 경로도 맞게 고쳐주시면 되겠습니다.

로컬에서 docker build를 시도해보시고 성공하셨다면 다음 과정으로 넘어갑시다.

2. Render 가입하기

저는 Github에 연동하여 서비스를 배포할 생각이니 Github로 가입하려고 합니다. 다들 잘 하실테니 길게 적진 않겠습니다.

3. Render에 배포하기

상단의 New 버튼을 누른 후, Web Service를 선택합니다.

until-584

Git 레포지토리에서 가져오기 위해 Build and deploy from a Git Repository를 선택합시다. 그 후엔 배포할 레포지토리를 선택해주면 됩니다. 만약 본인의 레포지토리가 아니라 Organization의 레포지토리 등의 경우 레포지토리 주소를 입력해도 가능합니다.

until-586

마지막으로는 세부 설정들을 기입할 차례입니다. 이름, 리전, 배포 대상인 브랜치 등을 기입해줍니다. 중요한 것은, 스프링 서버이니만큼 Runtime을 Docker로 설정해야 한다는 건 빼먹으면 안됩니다!

잘 따라오셨다면 다음과 같은 화면이 뜨면서 배포가 완료됩니다!

until-588

마무리하며

Render 같은 서비스 덕분에, 정말 간단한 프로젝트 등을 진행하며 배포가 필요한 경우에도 아깝게 돈을 써야하는 등의 일이 많이 줄어들었습니다.

Render에서는 웹 서버 말고도 PostgreSQL, Redis 등의 다양한 서비스들도 무료로 지원하니, 다들 써보시길 바라겠습니다.


- 컬렉션 아티클






반갑습니다 😄