안녕하세요.
오늘은 RDS_HOST 환경변수가 바뀌지 않는 문제를 해결한 과정을 기록해보려고 합니다...
💥발생한 문제
최근 서버와 DB를 새 AWS 계정으로 이전하고, 도메인도 새 주소로 연결을 완료했습니다.
EC2 내부에서 nc -vs {rds 엔드포인트}로 RDS와 연결도 테스트했지만, GitHub Actions CI/CD를 통해 배포할 때 DB 연결이 계속 실패했습니다.


로그에는 Host is unreachable 오류가 떴습니다. 이는 rds 접속에 실패한다는 뜻이었습니다.
기존 AWS 계정에서 새 계정으로 RDS를 이전하며 RDS 엔드포인트가 변경되었기에 .env파일에서 RDS_HOST 값을 새 엔드포인트로 수정해주었습니다.
# vi .env
RDS_HOST=new-rds-endpoint.amazonaws.com
cat.env를 해도 새 엔드포인트로 잘 나왔습니다..
하지만 이미지를 실행하고
docker exec -it everyvent-app env
위 명령어로 컨테이너 내부 환경변수를 확인해보니, 여전히 이전 RDS_HOST를 띄우는 문제가 있었습니다..
🤯 해결 원인
처음에는 단순히 세션 환경변수가 캐시처럼 남아 있는 문제라고 생각했습니다.
그러나 원인을 추적해보니, 이전 RDS 엔드포인트가 .bashcr에 export 되어 있었고, SSH 접속 시마다 해당 값이 자동으로 세션 환경변수로 재등록되고 있었습니다.
그래서 .env 파일을 수정해도, 컨테이너에는 항상 과거의 RDS_HOST 값이 주입되고 있었습니다.
🤓 해결 방법
vi ~./bashrc
export RDS_HOST=new-rds-endpoint.amazonaws.com
source ~/.bashrc
위 명령어를 실행하여, .bashrc에 등록되어있던 RDS_HOST 환경변수를 새 RDS 엔드포인트로 수정하고
컨테이너를 재 실행하여 해결했습니다 !

(completed가 이렇게 반갑기는 오랜만입니다...)
환경변수 주입하기: export vs .env vs .bashrc
서버 개발이나 Docker 환경에서 환경변수(Environment Variables)를 주입하는 방법은 주로 두 가지가 있습니다. 각각 특징과 사용 상황을 이해하면 설정 오류를 줄일 수 있습니다.
1. export 명령어 사용
- 개념: 쉘 환경에서 직접 변수를 설정하고 현재 세션이나 스크립트에 적용.
- 사용 예시:
export RDS_HOST=mydb.example.com
echo $RDS_HOST # mydb.example.com 출력
- 특징:
- 현재 터미널 세션 또는 스크립트에서만 유효.
- 시스템 재부팅 후에는 사라짐.
- 서버에서는
systemd,cron, 또는 Docker 컨테이너 실행 시 적용 주의 필요.
2. .env 파일 사용
- 개념: 환경변수를 파일로 관리하고, 애플리케이션 또는 Docker가 읽도록 설정.
- 사용 예시:
RDS_HOST=mydb.example.com
RDS_USER=admin
RDS_PASSWORD=secret
- 특징:
- 코드와 함께 버전 관리 가능.
- Docker Compose, Node.js, Spring Boot 등 다양한 프레임워크에서 지원.
- 애플리케이션 재시작 시 자동 반영 가능.
- 주의:
.env는 기본적으로 평문이므로 민감 정보 관리 필요.
3. bashcr 설정
bashcr( Bash Run Commands )이란?
- bash 셸이 시작될 때마다 자동으로 실행되는 설정 파일
- 터미널을 열거나, ssh로 접속했을 때 자동 적용
4. 핵심 비교
| 구분 | export | .env 파일 | .bashrc |
|---|---|---|---|
| 적용 범위 | 현재 세션 / 스크립트 | 애플리케이션 / Docker | SSH 접속 또는 bash 실행 시 |
| 지속성 | 재부팅 후 사라짐 | 파일 유지, 재시작 시 자동 적용 | 파일이 존재하는 한 |
| 버전 관리 | 불가능 | 가능 | 불가능 |
| 민감 정보 관리 | 쉘 접근자 주의 | 별도 암호화 필요 | 높음 |
💡팁
- 개발 환경:
.env사용 → 코드와 함께 쉽게 관리. - 서버 환경:
export로 직접 세션/시스템에 주입하거나,.env+ 시스템 서비스 연동. - Docker 컨테이너에서는
.env를 Compose 또는 Dockerfile에서 읽도록 설정하는 것이 가장 편리.
.env 파일을 바꿨다고 해서 이미 export된 세션 환경변수가 자동으로 갱신되지는 않습니다.
.bashrc의 환경변수와 컨테이너 내부에서 환경변수가 제대로 반영되는지 항상 env 명령어로 확인하세요 !!!!