Spring Boot Application 환경변수 설정하기
애플리케이션을 배포하기 위해서는 소스 코드를 빌드해야 하는데, 이때 데이터베이스 연결 정보와 같은 부분들은 깃허브에 절대 올리면 안 되기 때문에, 따로 설정을 해줘야 한다. 이번 글에서는 .env 파일을 이용해서 환경변수를 설정하고 적용하는 방법에 대해 다룬다.
1) application.yaml 작성
데이터베이스 연결 정보를 깃허브에 그냥 올리면 안 되기 때문에, 다음과 같이 ${키}로 설정한다.
그리고 이 상태에서 빌드하면 오류가 뜰 것이기 때문에, 인텔리제이에서 환경변수를 설정해줘야 한다.
.env 파일에 있는 환경변수를 불러오기 위해서는 다음 코드도 application.yaml 파일에 추가해야 한다.
# .env import
config:
import: optional:file:.env[.properties]
<전체 코드>
spring:
# .env import
config:
import: optional:file:.env[.properties]
datasource:
url: ${DB_URL}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver # PostgreSQL 드라이버 클래스
jpa:
hibernate:
ddl-auto: update # 스키마 자동 업데이트 (create, update, validate, none 등 선택)
properties:
hibernate:
format_sql: true # SQL 포맷팅
show-sql: true # 실행되는 SQL 출력
data:
sql:
enable: true # data.sql 파일 사용 여부
# 로그 레벨 설정
logging:
level:
org.springframework: INFO # Spring 관련 로그 레벨
org.hibernate.SQL: DEBUG # Hibernate SQL 로그 레벨
2) application-test.yaml 파일 작성
테스트 코드가 있는 경우에는 이 상태에서 그대로 빌드를 하면 실패한다. 테스트할 때에도 데이터베이스 연결을 확인하기 때문이다.
이를 위해서는 테스트 환경을 위한 yaml 파일을 따로 설정해줘야 한다.
test 폴더 > resources/application-test.yaml 파일 생성
다음과 같이 테스트 환경을 위한 설정 정보를 작성한다.
기본값을 지정하고 싶다면 ${변수명:기본값} 이런식으로 콜론을 붙여주면, 해당 환경변수가 없을 때 자동으로 기본 값으로 들어가게 된다
spring:
profiles:
active: test
datasource:
url: jdbc:postgresql://localhost:5432/myworkdb
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver
type: com.zaxxer.hikari.HikariDataSource
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: update # 스키마 자동 업데이트 (create, update, validate, none 등 선택)
properties:
hibernate:
format_sql: true # SQL 포맷팅
show-sql: true # 실행되는 SQL 출력
# 로그 레벨 설정
logging:
level:
org.springframework: INFO # Spring 관련 로그 레벨
org.hibernate.SQL: DEBUG # Hibernate SQL 로그 레벨
3) env 설정 방법
.env 파일 생성
프로젝트 루트 위치에 .env 파일을 생성하고, 환경변수를 작성한다.
- 형식: 변수=값
DB_URL=DatabaseURL
DB_USERNAME=myusername
DB_PASSWORD=mypassword
.gitignore에 추가
.env 파일은 절대 외부에 노출되면 안 되기 때문에, 깃허브에 올리면 안 된다.
.gitignore 파일에 .env 파일을 추가해서 깃허브에 올라가지 않도록 설정한다.
!/.env
참고