포트폴리오 사이트에 필요한 api를 Spring Boot 로 개발하고 어떻게 배포할지에 고민을 많이 했다.
처음에는 AWS로 배포하려고 했는데(그것밖에 몰랐다..^^) 찾아보니 클라우드 타입이라는 사이트가 있었다.
RDS와 S3를 사용 중인데 지금은 aws 프리티어를 이용 중이라 금액이 크지는 않지만 어쨌든 매달 요금이 나가는 상황이라.. EC2로 배포까지 하면 과금이 두려웠다... 심지어 프리티어가 끝나가기에..
HTTPS 지원 + Github Actions 지원에 금액적인 메리트가 커서 클라우드 타입으로 배포를 결정했다.
* 공식 홈페이지: https://docs.cloudtype.io/guide/welcome/intro
홈페이지에서 배포하기를 누르면 어떤 것을 배포할지 선택할 수 있다.
나는 깃허브에 private repository로 올려뒀기 때문에 내 Github 저장소 배포하기를 선택했다.
서비스 이름은 자유롭게 사용하고, 프레임워크로 Spring Boot를 선택해준다.
Spring Boot를 선택하면 java 버전을 선택하게 된다. 나는 v17로 개발하였기 때문에 v17로 변경했다.(기본은 8이다.)
중요한 건 Environment variables (환경변수)이다.
대체 환경변수를 어떻게 설정하는 건지 한참 헤맸다...
나는 DB랑 S3 관련 환경변수를 설정해 주어야 했는데, 대체 Name에는 뭘 입력해야 하는지..
영상을 보고 여러 글을 찾아봐도 확 와닿지 않았다..
배포를 몇 번을 한 건지 ㅠㅠ
결론적으로, Name은 내가 설정해주면 되는데, 그 설정한 이름을 내 application-prod(선택).yml(또는 .properties)에 넣어줘야 한다.
1. application-prod.yml 파일 설정
spring:
datasource:
url: ${DB_URL}
username: ${DB_USER_NAME}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver
cloud:
aws:
s3:
bucket: ${S3_BUCKET}
credentials:
accessKey: ${S3_ACCESS_KEY}
secretKey: ${S3_SECRET_KEY}
region:
static: ap-northeast-2
auto: false
stack:
auto: false
원래대로라면 ${} 이 아닌 실제 값을 넣어주지만, 배포를 위해 ${} 형식으로 다 변경해 준다.
${} 안에 적힌 값이 환경변수의 Name이 된다!
이렇게 넣고 값들을 넣어주면 끝!
인 줄 알았지만.... 실행에서 에러가 났다.
profile을 찾을 수 없다는 게 이유였다.
application-prod.yml에 환경변수를 세팅했는데, application-prod.yml을 사용하라는 내용은 적어주지 않았던 것!!
spring:
profiles:
active: ${PROFILE}
application.yml에 위 내용을 적어주어야 PROFILE에 해당하는 application-${PROFILE}.yml 파일을 찾아 실행 또는 배포할 수 있다.
내 application-${PROFILE} .yml 이름에 맞는 Value를 넣어주면 세팅 끝!
※ 참고로 이렇게 설정하면, local에서 실행할 때도 profile을 넣어줘야 한다.
배포하기를 누른 후 빌드 로그를 확인해보면 성공한 것을 확인할 수 있다!
실행 로그에서 profile을 알맞게 찾아서 성공한 것도 확인했으면 정말 다 됐다 ㅎㅎ
나는 로그 설정을 해둬서 실행 로그에 들어가면 로컬에서 보는 것과 동일한 로그를 다 확인할 수 있다.
이게 넘 편하고 좋았다 ㅎㅎ
연결 탭에 들어가면 url을 확인할 수 있다.
프론트에서 사용하는 api 주소를 localhost에서 저 url로 바꿔주면 클라이언트랑 연결 완!
저 도메인은 다른 것으로 연결할 수 있는데, 나는 서버 api로 활용하는 거라 굳이 변경하지는 않았다.
'서버 > SprintBoot' 카테고리의 다른 글
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(구글 연동 해제) (0) | 2023.09.19 |
---|---|
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(네이버 회원탈퇴) (0) | 2023.09.19 |
[스프링부트(Spring Boot)] 소셜 로그인 회원탈퇴(카카오 회원탈퇴) (0) | 2023.09.19 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(네이버 로그아웃) (0) | 2023.09.18 |
[스프링부트(Spring Boot)] 소셜 로그인 로그아웃(카카오 로그아웃) (0) | 2023.09.15 |