개요
프로젝트를 진행하면서 application.yml 파일에 입력되는 여러 민감정보(oauth token, database url, username, password 등..)이 github에 노출되는 것이 마음 한켠으로 불편했다.
그래서 docker container를 실행할 때 .env 파일을 통해 값들을 주입시켜주는 방법과 로컬 환경에서도 .env 파일을 통해 관리할 수 있는 방법을 소개하겠다.
본론
📌 .env 파일 만들기
확장자명 .env 파일을 먼저 만들어서 환경변수로 사용해야 한다.
{환경변수명}={값}
위와 같이 간단한 형태로 작성해주면 된다.
아래는 예시이다.
MY_DATA_SOURCE=jdbc:mariadb://127.0.0.1:3306/capstoneAuth
MY_DATA_USERNAME=root
MY_DATA_PASSWORD=1234
확장자는 .env파일로 반드시 해주어야 한다.
📌 application.yml에서 환경변수 값 읽어오기
spring:
datasource:
url: ${MY_DATA_SOURCE}
username: ${MY_DATA_USERNAME}
password: ${MY_DATA_PASSWORD}
- 위의 예시처럼 ${환경변수명}으로 작성해주면 애플리케이션을 실행할 때 환경변수에서 값을 읽어온다.
📌 로컬 환경 (intellij IDE)에서 .env 파일로 변수 주입해주기
docker container에서 적용하기 전에 local 환경에서도 보다 쉽게 .env파일로 환경변수를 적용하는 방법을 살펴보겠습니다.
intellij 설정에서 plugin으로 들어간 후 EnvFile 플러그인을 다운로드 하고 IDE를 재시작해줍니다.
그 후 run → Edit Configurations로 들어가 주고 Enable EnvFile을 체크하고 아래에 + 버튼을 눌러 .env 파일을 등록합니다.
📌 도커 컨테이너 환경에서 환경변수 설정해주기
도커 컨테이너 내부에서 동작하는 Spring Boot는 호스트 OS와 격리되어 있기 때문에 호스트 OS의 환경변수를 읽어올 수 없습니다.
따라서 컨테이너를 실행해줄 때 환경변수를 설정해주어야 하는데 docker container에서는 .env 파일을 환경변수로 한번에 등록하는 방법을 제공해줍니다.
sudo docker run -d -p 11000:11000 --env-file={.env 파일} changuii/auth:latest
--env-file={env 파일}
: 다음의 명령어에 env 파일을 넣어주어 환경변수가 도커 컨테이너 내부에 적용될 수 있도록 해줍니다.
결론
github에 올리면 안되는 민감한 정보들을 쉽게 .env 파일로 정의하여 배포 환경에서도 적용시켜 줄 수 있게 되었다.
값들이 성공적으로 주입되어 JPA의 초기화가 잘 이루어진 것을 볼 수 있었다.
'Spring' 카테고리의 다른 글
[Spring Boot] 스프링 동시성 제어하기 (Java Synchronized keyword) (1) | 2024.04.25 |
---|---|
[Spring Boot] Spring Boot에서 JPA QueryDSL 적용 방법 (0) | 2024.04.17 |
[Spring] 스프링 프로젝트에 카카오 로그인, 회원가입 구현 - (2) (0) | 2024.03.31 |
[Spring] 스프링 프로젝트에 카카오 로그인, 회원가입 구현 - (1) (0) | 2024.03.31 |
[Spring] Spring boot 프로젝트를 javadoc 문서로 만들기 (0) | 2024.03.29 |