스프링 부트 애플리케이션의 환경 변수

Spring Boot를 사용하면 애플리케이션을 외부화configurations할 수 있습니다. 데이터베이스에 연결하고 이에 대한 몇 가지 작업을 수행하는 간단한 응용 프로그램을 사용하겠습니다. 이러한 종류의 앱에 대한 표준 구성은 데이터베이스 관련 세부 정보입니다. 아래는 하나의 샘플properties 파일입니다.

spring.datasource.url=${JDBC_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}


이와 같이 애플리케이션 시작 시 전달할 수 있는 동적 구성으로 갖고자 하는 애플리케이션 고유의 속성이 더 많을 수 있습니다. 개발, 스테이징, 프로덕션과 같은 다양한 환경에서 이러한 기능을 갖기 위해. 스프링 부트는 option 을 제공하여 다른 환경에 대해 다른 값을 가진 환경 특정 파일을 갖습니다.

다음은 장단점이 있는 개발자가 따르는 몇 가지 일반적인 관행입니다.
  • 이 파일의 비밀을 코드 베이스의 일부로 커밋합니다.
  • 코드 베이스의 로컬 구성만 커밋하고 배포 파이프라인의 일부로 다른 리포지토리에서 환경별 파일을 복사하고 패키지를 빌드합니다.

  • 별도의 프로필 파일이 있는 경우 올바른 프로필 세부 정보가 전달되도록 각각에 대해 별도의 시작 스크립트가 필요할 수 있습니다. 비밀 또는 구성 변경을 위해 빌드 시 파일을 복사하는 경우 적용하려면 패키지를 다시 빌드해야 할 수 있습니다.

    12factor 앱에 따르면 환경에 구성을 저장하는 것이 좋습니다.

    이를 어떻게 달성할 수 있습니까?


  • 여러 속성 파일을 피할 수 있고 아래와 같이 하나의 파일만 가질 수 있습니다.

  • spring.datasource.url=${JDBC_URL}
    spring.datasource.username=${DB_USERNAME}
    spring.datasource.password=${DB_PASSWORD}
    


    위의 여러 가지 방법으로 도움이
  • 구성이 변경된 경우 패키지를 다시 빌드할 필요가 없습니다.
  • 코드 베이스의 일부로 버전이 지정된 하나의 공통 속성 파일.
  • 빌드 파이프라인은 일반적입니다. 모든 환경에서 동일한 빌드를 사용할 수 있음

  • 컨테이너로 실행할 때



    애플리케이션을 컨테이너로 실행하는 경우 애플리케이션을 시작하는 동안 환경 변수를 전달해야 합니다. 이는 배포 파이프라인에서 처리할 수 있습니다. 값이 변경되면 컨테이너를 다시 시작하는 것으로 충분합니다.

    뚱뚱한 항아리로 실행할 때



    응용 프로그램을 일반 jar로 실행하는 경우 가장 좋은 방법은 환경 변수를 호스트 시스템의 일부로 설정하고 응용 프로그램을 시작하는 것입니다.

    로컬 개발/테스트는 어떻습니까?



    테스트의 경우 전용 속성 파일을 사용하는 것이 좋습니다. 지역 개발을 위해 우리는 두 가지 방법으로 그것을 할 수 있습니다.
  • 로컬에 하나.env 파일이 있고 응용 프로그램을 시작하기 전에 파일source이 있습니다
  • .
  • 환경에 없는 경우 속성에 기본값을 지정할 수 있습니다spring.datasource.username=${DB_USERNAME:username}.

  • 여기서 주목해야 할 핵심은 배포 프로세스입니다. 이러한 스프링 부트 애플리케이션 설정을 위해 배포 파이프라인을 수행하는 방법에 대한 자세한 블로그를 다룰 것입니다.

    좋은 웹페이지 즐겨찾기