20230801 [Fly.io] 백엔드 배포하기

Daisy🌷·2023년 8월 1일
1

🎁배포🎁

목록 보기
5/6
post-custom-banner
  1. application.properties
spring.config.activate.on-profile=production
spring.datasource.url=jdbc:${DATABASE_URL}
  1. fly 설치
brew install fly
fly
fly apps
fly apps list
  1. Docker 설치
brew install --cask docker

터미널을 켜서 내 백엔드 프로젝트가 있는 위치로 이동해준다.

  1. PostgreSQL 세팅
fly postgres create

  • Choose an app name: f4t2-spring-database
  • Select region: Tokyo, Japan (nrt)
  • Select configuration: Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
  • Scale single node pg to zero after one hour? No

마지막에 나오는 URI는 기록해두어야 한다.

이제 준비는 끝났고 본격적으로 배포!

  1. Dockerfile 만들기
touch Dockerfile
FROM eclipse-temurin:17
WORKDIR /u/myapp
COPY build/libs/*[^plain].jar ./
CMD java -Dserver.port=8080 -Dspring.profiles.active=production -jar *.jar
  1. Jar 파일 빌드 후 Docker 이미지 생성
./gradlew clean bootJar 
docker build -t f4t2-spring .

-- 잘 됐는지 확인 --

docker run --rm -it -p 8080:8080 f4t2-spring bash
ls -al
java -Dserver.port=8080 -jar *.jar

http://localhost:8080/

  1. Fly로 배포
fly launch

  • Choose an app name: f4t2-spring
  • Choose a region for deployment: Tokyo, Japan (nrt)
  • Would you like to set up a Postgresql database now? No
  • Would you like to set up an Upstash Redis database new? No
  • Create .dockerignore from .gitignore file? No
  • Would you like to deloy now? No

여기서 .dockerignore 파일을 만들거냐는 질문에 yes로 답한다면 jar 파일 빌드 후 docker 이미지를 생성하는 과정에서 쓰이는 파일이 ignore 되는 것은 아닌지 잘 확인해야 한다.

Fly에 App 추가됨. (https://fly.io/dashboard)
fly.toml 설정 파일 만들어짐. (포트 번호 등을 변경할 수 있다.)

fly deploy

아까 기록해둔 URI를 가져온다.

fly secrets set DATABASE_URL="postgresql://호스트이름:5432/postgres?user=유저이름&password=비밀번호"

fly 홈페이지의 Dashboard 들어가서 Secrets이 잘 세팅됐는지 확인한다.

배포 도중 Out of memory 오류가 발생했다면? fly scale 올리기!

https://fly.io/docs/apps/scale-machine/#select-a-preset-cpu-ram-combination

fly scale show 
fly scale memory 512

배포가 실패했다면?

원인을 수정한 뒤 fly deploy를 해주면 된다.

profile
Frontend Developer
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 10월 25일

안녕하세요! 포스트 잘 읽었습니다!
혹시 SpringBoot와 PostgreSQL을 연동하고 배포한 서버에서 FATAL: password authentication failed for user "postgres" 이러한 에러는 만난 경험이 없으신지 여쭤보고 싶습니다...

답글 달기