Render로 Springboot 무료 호스팅

Minu·2023년 12월 10일
4

기타

목록 보기
2/5

해당 글은 spring,java,docker 에 대한 기본적인 지식이 있다는 전제하에 작성했습니다


Render

선정한 이유

  • 간단하다. 도커 레포지토리 URL 을 업로드하면 배포가 끝난다
    (git 레포지토리로도 할 수 있지만 여기선 설명 X)
  • 첫 가입 때 신용카드 번호 입력을 하지 않고 바로 배포 할 수 있다 즉 따로 설정하지 않는 이상 자동 결제되지 않는 무료방식이다
    https://render.com/docs/free
    (해당 사이트 무료 정책 AWS 와 똑같이 월 최대 750시간)

환경 설정

  • springboot
  • gradle
  • java 17
  • lombok
  • docker

SpringBoot 생성

intellij 혹은 https://start.spring.io/ 사이트에서 lombok,spring web 선택

1. 프로젝트 생성

2. 간단한 코드 작성

  • Posts.class
@Data
@AllArgsConstructor
public class Posts {
    private String title;
    private String content;
}
  • PostsController.class

@RestController
@RequestMapping("/api/v1/posts")
public class PostController {

    private static final List<Posts> POSTS = List.of(
        new Posts("title1", "content1"),
        new Posts("title2", "content2")
    );

    @GetMapping
    public List<Posts> getPosts() {
        return POSTS;
    }

}

/api/v1/posts 에 접속하면 2개 임시 Posts 리턴

3. gradle build

./gradlew build 

혹은 intellij build 버튼

빌드 성공하면

프로젝트명/build/libs 경로에
프로젝트명-0.0.1-SNAPSHOT.jar 파일이 생김

잘 돌아가는지 테스트

java -jar build/libs/render-0.0.1-SNAPSHOT.jar
(java -jar build/libs/프로젝트명-0.0.1-SNAPSHOT.jar)

로컬 접속

  • localhost:8080

  • localhost:8080/api/v1/posts

(이전에 작성했던 api/v1/posts 엔드포인트에 데이터가 정상적으로 나오는지 확인)

4. Dockerfile 생성

  • Dockerfile
FROM azul/zulu-openjdk:17-latest
VOLUME /tmp
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  • Docker Image 생성
docker build -t test . // test 라는 이름으로 image 생성

⛔️ MAC 일 경우

docker build --platform linux/amd64 -t test .

MAC 사용중이라면 도커 이미지 빌드 시 운영체제가 달라 호환이 안됨


  • 생성된 Docker image 확인
#docker images

REPOSITORY           TAG                 IMAGE ID       CREATED             SIZE
test                 latest              ddc1fcd87442   About an hour ago   415MB
  • Docker Repository 생성 (공개로 설정)

여기서는 Docker Repository 이름을 render 로 설정

비공개 Repository 로 생성할 경우 도커 URL 을 Render 사이트에 업로드시 따로 설정해야 됩니다
https://render.com/docs/deploy-an-image#managing-credentials

  • Docker tag 설정 (Repository 에 업로드를 위한 test 이미지 태그 등록)
docker tag test:latest         도커아이디/render:host
docker tag [기존 이미지 이름]:[기존 태그] [Docker Hub 사용자 이름]/[새로운 이미지 이름]:[새로운 태그]
  • 태그붙여진 Docker image 확인
docker image

REPOSITORY           TAG                 IMAGE ID       CREATED             SIZE
도커아이디/render      host                ddc1fcd87442   About an hour ago   415MB // 새롭게 생성 됨
test                latest              ddc1fcd87442   About an hour ago   415MB
  • 새롭게 생성 된 Docker image를 push
docker push 도커아이디/render:host
  • Repositry 에 업로드 되었는지 확인

전체 패키지 구조


5. Render 접속

  • 가입 후 new - web service 선택

  • Deploy an existing image from a registry 선택

image URL 부분에 해당 도커 이미지가 올라간 Repository URL 입력

abcd1234/render:host
[도커계정]/[레포지토리명]:[태그]

  • 정상적으로 했을 경우 (만약 private docker repository 로 했을 경우 아래 Credential 설정 해야 함)

  • 이름,지역 및 요금제 선택

원하는 이름을 설정 후 지역 선택 (그나마 가까운 싱가포르로 함)
그리고 Instance Type FREE 선택

도메인이 뜨고

서버가 켜질때까지 기다리고 접속하면

  • 메인페이지

  • 간단한 api 엔드 포인트

정상적으로 들어가짐
끝!

느리지만 간단한 토이 프로젝트 호스팅용으로는 충분 하다고 생각합니다.

0개의 댓글