[Spring] 스프링부트 환경변수 설정 방법: .env, dotenv 없이, application-test.yaml

728x90
반응형

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

 


참고

https://gengminy.tistory.com/24

728x90
반응형