처음에는 자바 애플리케이션을 직접 배포해보려 했으나,
무료 호스팅 사이트 중 자바 지원이 제한적인 경우가 많았다.
도커로 배포할 수 있는 사이트는 많았고, 결국 도커를 활용한 배포 방식으로 전환하였다.
요약
- Dockerfile을 작성하여 빌드 및 실행 단계 구성
- Render.com에서 Git 연동 또는 Manual Deploy 기능을 통해 배포
- 필요한 환경 변수들을 Render 에서 설정
1. Spring Boot 루트 경로에 Dockerfile 생성하기
예시 코드
# 1. Java 21 JDK 이미지 사용 (빌드 단계)
# Java 21의 JDK 이미지를 사용하여 빌드 환경을 구성.
# "AS build"는 이 단계를 build라는 이름으로 지정하여, 후속 단계에서 참조할 수 있도록 합니다.
FROM eclipse-temurin:21-jdk AS build
# 빌드 단계에서 작업할 디렉터리를 /app으로 설정합니다.
WORKDIR /app
# 2. 프로젝트 코드 복사 및 빌드
# 현재 디렉터리의 모든 파일을 컨테이너의 /app 디렉터리로 복사합니다.
COPY . .
# Maven Wrapper를 이용해 테스트를 건너뛰고 프로젝트를 빌드합니다.
RUN ./mvnw clean package -DskipTests
# Gradle 일 경우 빌드 방법
# RUN ./gradlew build -x test
# 3. 실행 단계 (JDK 대신 JRE만 사용하여 경량화)
# Java 21 JRE 이미지를 사용해 실행 환경을 구성합니다.
FROM eclipse-temurin:21-jre
# 실행 단계에서도 작업할 디렉터리를 /app으로 설정합니다.
WORKDIR /app
# 4. 빌드된 JAR 파일 복사
# 빌드 단계(build)에서 생성된 JAR 파일을 현재 단계의 /app 디렉터리에 app.jar로 복사합니다.
COPY --from=build /app/target/*.jar app.jar
# Gradle 일 경우 경로
# COPY --from=build /app/build/libs/*.jar app.jar
# 5. 컨테이너 시작 시 실행할 명령어
# 컨테이너가 시작되면 "java -jar app.jar" 명령어로 애플리케이션을 실행합니다.
CMD ["java", "-jar", "app.jar"]
2. render.com 에서 웹 서비스를 선택하고 도커를 선택 후 배포
이때 본인의 git 저장소를 선택하여 자동배포를 하게 할 수 있고
로컬에 프로젝트가 존재한다면 Manual Deploy 기능으로 배포 가능
3. Environment 설정
- 대시보드 접속:
Render.com에 로그인한 후, 해당 서비스의 설정(Settings) 페이지로 이동합니다. - 환경 변수 섹션:
“Environment” 또는 “Environment Variables” 섹션을 찾습니다.
여기서 각 환경 변수(Key)와 해당 값을(Value) 입력할 수 있습니다. - 변수 추가:
예를 들어, Spring Boot 애플리케이션이 PostgreSQL 데이터베이스를 사용한다면, 아래와 같이 변수들을 추가합니다.- DATABASE_URL : 데이터베이스 접속 URL
(예: jdbc:postgresql://host:port/dbname) - DATABASE_USERNAME : 데이터베이스 사용자명
- DATABASE_PASSWORD : 데이터베이스 비밀번호
- DATABASE_DRIVER_CLASS_NAME : (옵션) 사용하려는 JDBC 드라이버 클래스 명
- (PostgreSQL의 경우 일반적으로 org.postgresql.Driver)
- DATABASE_URL : 데이터베이스 접속 URL
Spring Boot에서는 application.properties 또는 application.yml 파일에서 ${VARIABLE_NAME} 형태로 환경 변수를 참조 가능
PostgreSQL 를 통한 연결 설정 예시
spring.datasource.url=${DATABASE_URL}
spring.datasource.username=${DATABASE_USERNAME}
spring.datasource.password=${DATABASE_PASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver
완료.
728x90
반응형
'Spring Boot' 카테고리의 다른 글
[Spring Boot] Mybatis API 서버 만들기 (1) | 2025.02.17 |
---|