
지금까지 개발을 해오면서 환경변수 설정을 하라는대로 해왔다.
처음 맥북을 샀을 때 java나 c++ 개발을 하기 위해 구글링해서 나온 개발 환경 세팅 튜토리얼을 따라하며 시스템 환경변수를 설정하기도 하고,
강의를 들으며 프로젝트 환경변수 설정을 따라해보기도 하였다.
직접 환경변수를 만들어 보기도 하여 감이 잡혀가는 중인데..
한 가지, 팀 협업을 하면서 환경변수 설정이 불편한 부분이 많았다. 각 팀원이 설정한 환경변수를 공유해야하는데 매번 수동으로 고치고 있다.
이 글의 이유는 바로 다음과 같다.
프로젝트의 여러 팀원과 공통된 환경변수를 편리하게 공유하고 싶다.
먼저 팀원들과 공유하기 전에 환경변수를 로컬에서 어떻게 구성하는 것이 바람직한지 알아보면 좋겠다고 생각했다.
환경변수를 구성하는 방법에는 여러 가지가 있고 그 중 대표적인 방법들을 찾아봤다.
터미널에서 현재 세션 동안만 유효한 환경변수를 설정하여 터미널을 닫으면 설정 초기화
예시 (bash)
$ export API_KEY="your_api_key_here"
장점
단점
환경변수를 로컬 시스템 전역에 설정하면, 모든 터미널 세션에서 사용 가능
예시
macOS/Linux
~/.bash_profile또는~/.bashrc또는~/.zshrc파일에 환경변수 추가 후, 파일을 소스하거나 터미널을 재시작$ export API_KEY="your_api_key_here" $ source ~/.bash_profileWindows: 시스템 속성 > 고급 > 환경 변수에 추가
장점
단점
~/.bashrc, ~/.bash_profile, ~/.zshrc) 또는 macOS /etc/paths 파일 설정이 필요함. 복잡한 관리.env 파일에 환경변수를 정의해두고, 애플리케이션에서 이를 로드하는 방식
여러 언어에서 .env 파일을 쉽게 로드할 수 있는 패키지가 제공됨
Python: python-dotenv
Node.js: dotenv
Java (Spring Boot): Dotenv 라이브러리
예시 (Java)
.envAPI_KEY=your_api_key_here DB_HOST=localhostDotenvConfig.java
// Dotenv 객체를 생성하여 환경 변수 파일(.env)을 로드하고 빈으로 등록합니다. @Configuration public class DotenvConfig { @Bean public Dotenv dotenv() { return Dotenv.configure().load(); } }DataSourceConfig.java
// 환경 변수 파일(.env)에서 MySQL 데이터베이스 설정 정보를 가져와 연결을 구성합니다. @Configuration @RequiredArgsConstructor public class DataSourceConfig { private final Dotenv dotenv; @Bean public DataSource dataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl( "jdbc:mysql://" + dotenv.get("DB_HOST") + ":" + dotenv.get("DB_PORT") + "/" + dotenv.get("DB_NAME")); dataSource.setUsername(dotenv.get("DB_USERNAME")); dataSource.setPassword(dotenv.get("DB_PASSWORD")); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); return dataSource; } }
장점
단점
주요 IDE는 환경변수를 프로젝트 설정 파일에 지정 가능함
예시
Visual Studio Code: .vscode/settings.json
IntelliJ: Run/Debug Configurations 에서 환경변수 설정
장점
단점
Docker 위에서 돌아가는 애플리케이션의 경우 OS와 분리되어 있어
Docker에도 환경변수를 전달해주어야 함
예시 (docker-compose.yml)
services: web: image: your_image environment: - API_KEY=${API_KEY}또는 .env 파일을 Docker에 전달

뭘 모를 때는 IntelliJ 환경변수 설정 창에서 모든 환경변수를 관리했었다. (현재는 지워서 없음)
그리고 팀원들과 공유할 때는 Environment variables를 [Ctrl+C] - [Ctrl+V] 하여 일일이 알려주었다. 어쩌다 새로운 환경변수를 빼먹고 알려주지 않으면 팀원들은 왜 서버가 뜨지 않냐며 물어온다.
처음에는 괜찮아도 환경변수가 몇 십개가 되니 불편해졌다.
그래서

.env 파일을 사용하기로 하였다!
파일을 공유하기만 하면 되기 때문이다.
그런데 문제가 있다.
환경변수는 보안에 민감한 정보를 포함하는 경우가 많아서!
되도록이면 .env 파일을 .gitignore에 추가하여 버전 관리에서 제외하는 것이 좋다.
그렇다면 .env 파일을 팀원들과 어떻게 공유할 것이냐????????
메일이나 카카오톡 같은 메신저에 첨부해버릴까?
뭐 그것도 방법일 수는 있겠는데.
개발자스럽진 않다… 이것도 변경사항이 발생할 때마다 건네주는 건 번거롭다는 것은 똑같음.
클라우드 환경의 IDE