티스토리 뷰
목차
Docker 컨테이너에서 환경 변수를 설정하는 방법은 애플리케이션의 유연성을 높이고 보안을 강화하는 중요한 기술입니다. 본 글에서는 환경 변수를 설정하는 다양한 방법과 실무에서 활용하는 팁을 소개합니다.
Docker 컨테이너에서 환경 변수가 중요한 이유
Docker 컨테이너는 가볍고 이동성이 뛰어나며, 다양한 환경에서 일관되게 실행될 수 있도록 설계되었습니다. 하지만 애플리케이션이 실행될 때 데이터베이스 접속 정보, API 키, 설정 값과 같은 환경별 설정을 적용하려면 환경 변수(Environment Variables)를 효과적으로 관리해야 합니다. 환경 변수는 코드 수정 없이 동적으로 설정 값을 변경할 수 있도록 해주며, 보안 및 유지보수 측면에서도 큰 이점을 제공합니다. 이 글에서는 Docker 컨테이너에서 환경 변수를 설정하는 다양한 방법과 실무에서 활용할 수 있는 팁을 소개합니다.
Docker 컨테이너에서 환경 변수 설정하는 방법
1. -e
옵션을 사용하여 환경 변수 설정
Docker 컨테이너를 실행할 때 -e
옵션을 사용하여 환경 변수를 직접 설정할 수 있습니다.
예제
docker run -e DB_HOST=localhost -e DB_USER=root -e DB_PASS=secret my-docker-image
이렇게 실행하면 컨테이너 내에서 DB_HOST
, DB_USER
, DB_PASS
환경 변수를 사용할 수 있습니다.
2. --env-file
옵션을 사용하여 환경 변수 설정
환경 변수가 많을 경우, 개별적으로 -e
옵션을 지정하는 대신 --env-file
을 사용하여 환경 변수를 관리할 수 있습니다.
예제
# .env 파일 생성 (파일명: my-env-file)
DB_HOST=localhost
DB_USER=root
DB_PASS=secret
# Docker 실행 시 .env 파일을 사용
docker run --env-file my-env-file my-docker-image
이 방법을 사용하면 환경 변수를 보다 쉽게 관리하고, 여러 환경에서 일관되게 설정할 수 있습니다.
3. Dockerfile에서 ENV
지시어를 사용하여 환경 변수 설정
Docker 이미지를 빌드할 때 ENV
지시어를 사용하여 기본 환경 변수를 설정할 수 있습니다.
예제
# Dockerfile
FROM node:14
ENV NODE_ENV=production
ENV PORT=3000
이 방법을 사용하면 컨테이너가 실행될 때 기본적으로 설정된 환경 변수를 사용할 수 있습니다.
4. Docker Compose에서 환경 변수 설정
Docker Compose를 사용하면 environment
키 또는 env_file
을 통해 환경 변수를 설정할 수 있습니다.
예제 1: environment
키 사용
version: '3'
services:
app:
image: my-docker-image
environment:
- DB_HOST=localhost
- DB_USER=root
- DB_PASS=secret
예제 2: env_file
사용
version: '3'
services:
app:
image: my-docker-image
env_file:
- my-env-file
이 방법을 사용하면 환경 변수를 보다 체계적으로 관리할 수 있으며, 여러 개의 환경 파일을 사용할 수도 있습니다.
5. 컨테이너 내부에서 환경 변수 확인
컨테이너 내부에서 설정된 환경 변수를 확인하려면 printenv
명령어를 사용할 수 있습니다.
예제
docker run -e TEST_VAR=hello my-docker-image env
또는 컨테이너 내부에서 직접 실행할 수도 있습니다.
docker exec -it my-container-name printenv
6. 보안이 중요한 환경 변수 관리
환경 변수를 사용할 때 보안이 중요한 정보(API 키, 비밀번호 등)는 다음과 같은 방법으로 보호할 수 있습니다.
- Docker Secret 사용: Docker Swarm을 사용하여 보안이 중요한 데이터를 저장
- Kubernetes Secret 사용: Kubernetes 환경에서 환경 변수를 안전하게 관리
- . env 파일을 Git에서 제외: 환경 파일을. gitignore에 추가하여 보안 유지
Docker 환경 변수 설정 방법 요약
Docker 컨테이너에서 환경 변수를 설정하는 방법은 여러 가지가 있으며, 프로젝트의 요구사항에 따라 적절한 방법을 선택할 수 있습니다.
-e
옵션 사용: 실행 시 개별적으로 환경 변수 설정--env-file
사용: 여러 환경 변수를 한 파일에서 관리- Dockerfile에서
ENV
지시어 사용: 기본 환경 변수 설정 - Docker Compose에서
environment
또는env_file
사용: 여러 컨테이너의 환경 변수 관리 - 보안이 중요한 환경 변수 관리: Docker Secret, Kubernetes Secret 활용
환경 변수를 적절하게 활용하면 Docker 컨테이너의 재사용성을 높이고, 설정을 동적으로 변경할 수 있어 유지보수와 배포가 훨씬 쉬워집니다. 실무에서 Docker 환경 변수를 효과적으로 설정하여 보다 안정적인 애플리케이션을 운영해 보세요!