Heroku의 무료 요금제 이후의 삶

3644 단어
큰 AWS, GCP 또는 Azur 작업에 들어가지 않고 작은 Spring Boot REST API 및 기타 POC를 계속 배송하는 방법은 무엇입니까?

그 토요일 아침 전에는 Render에 대해 들어본 적이 없습니다.

무료 요금제 정책 업데이트 후 Heroku에 대한 대체품을 검색하던 중 Twitter에서 Railway App보다 매우 쉬운 배포 방법을 약속하고 있음을 알게 되었습니다.

나는 그것을 시도하고 싶었다.
제안된 Spring Boot 템플릿이 없습니다.
즉, 빠른 시작이 없습니다.
도커.

나는 그것에 대해 생각합니다.

Render에 대해 이야기하는 다른 스레드를 발견했습니다.
같은 종류의 약속.
스프링 부트도 없습니다.
다시 도커.



좋아, 이제 Docker로 가자!

쉬운 소년.

해당 머신에 Docker가 설치되어 있지도 않습니다.

알겠습니다. 첫 번째 단계는 https://docs.docker.com/desktop/install/mac-install/으로 이동합니다.

👉 다운로드, 더블 클릭, 잠시만 기다리세요…
Docker에 대한 모든 설정이 완료되었습니다.

그런 다음 Dockerfile을 만듭니다. 흠… 알았어.
커뮤니티 포럼 스레드와 함께 Docker for Render에 대해 이야기하는 Twitter 스레드를 기억합니다.

#
# Build stage
#
FROM maven:3.6.2-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean -DskipTests package

#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/vod-0.0.1.jar /usr/local/lib/vod.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.profiles.active=staging", "-jar","/usr/local/lib/vod.jar"]


필요에 맞게 업데이트하고 Dockerfile로 저장했습니다.

그런 다음 docker-compose 파일입니다.
현재 저에게는 다음과 같습니다.

version: "3.8"

services:
  app:
    build: ./
    restart: on-failure
    env_file: ./.env
    ports:
      - 6868:8080
    volumes:
      - .m2:/root/.m2
    stdin_open: true
    tty: true

volumes:
  db:


매우 간단하지만 나중에 모든 DB 항목을 동적으로 추가하도록 조정됩니다.

명령을 사용하여 로컬에서 테스트했습니다.
docker-compose up
CLI에서 예상대로 Docker를 시작하고 컨테이너 등을 생성하고 API에 액세스할 수 있도록 했습니다http://localhost:6868.

배포 테스트를 위해 비밀 변수를 사용하지 않고 단순화된 application.yml 파일을 사용했습니다.

나중에 커밋하고 푸시하고 Render 웹사이트로 돌아가서 다음의 간단한 단계를 따르세요.
  • 화면 오른쪽 상단에 새 웹 서비스를 만듭니다.


  • 배포할 Github 저장소에 연결하려면 양식을 작성하십시오.
  • 프로젝트 이름을 선택하고 계획을 선택한 다음 목록에서 Docker를 환경으로 선택하고 배포할 분기를 선택합니다
  • .
  • 고급을 클릭하고 몇 개의 필드를 채웁니다.
    루트 디렉토리, 저에게는 . (점)
    올바른 값을 가진 Dockerfile 경로 입력, 저에게는 Dockerfile
  • 원하는 경우 내 엔드포인트
  • 를 사용하여 상태 확인 엔드포인트 값을 추가했습니다.
    /api/v1/status
    또한 초기에 배포를 계속 제어하기 위해 푸시 시 자동 배포를 끕니다.

    짜잔! 웹 서비스 만들기 버튼을 클릭하면 완료됩니다.

    아래와 같이 프로젝트 대시보드로 리디렉션되고 배포가 실행 중이어야 합니다.



    Quick note, so you just don't despair with failing attempts:
    It took a small amount of time before the logs were displayed on that console, for me.
    As long as the logs weren't showing, the deployment kept failing.
    But as soon as it was being routed to the console properly, it's ok.
    You can then ping your brand new hosted API and enjoy :)



    KOO, Audrey, MakLut의 도움에 감사드립니다 :)

    건배 ! ✌️

    좋은 웹페이지 즐겨찾기