환경 변수와 .env 파일
환경 변수와 변수 치환, .env 파일을 사용해 Compose 서비스를 깔끔하게 구성하고, 개발·스테이징·운영 환경에서 하나의 Compose 파일을 사용하는 방법을 배워 보세요.
환경 변수와 .env 파일은(는) CoddyKit의 무료 Docker & DevOps Fundamentals 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Docker & DevOps Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
구성을 외부화하는 이유
Compose 파일에 비밀번호와 포트를 직접 입력하면 유연하지 않고 안전하지 않습니다. 환경 변수를 사용하면 YAML을 수정하지 않고도 환경별로 동작을 변경할 수 있습니다.
- 비밀 정보를 버전 관리에서 제외합니다.
- 어디서나 하나의 Compose 파일을 재사용합니다.
- 실행할 때 값을 재정의합니다.
environment 키
서비스 내부에서 environment 아래에 변수를 맵으로 선언합니다. 이 변수는 시작할 때 컨테이너에 주입됩니다.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secret목록 형식
같은 키에 KEY=VALUE 문자열 목록을 사용할 수도 있습니다. 읽기 편하다고 생각하는 형식을 선택하세요.
services:
db:
image: postgres:16
environment:
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secret.env 파일
Compose는 프로젝트 디렉터리에 있는 .env라는 파일을 자동으로 읽습니다. 이 파일에 값을 한 번 정의한 다음 ${VAR} 치환으로 참조할 수 있습니다.
# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080변수 치환
Compose 파일의 어디에서나 ${VAR}를 사용하세요. Compose는 구문을 분석하기 전에 이를 .env 또는 셸의 값으로 바꿉니다.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASS}기본값
${VAR:-default}로 대체값을 지정할 수 있습니다. 변수가 설정되지 않았거나 비어 있으면 기본값이 사용되므로 전체 .env 파일이 없어도 스택이 작동합니다.
ports:
- "${WEB_PORT:-80}:80"필수 변수
${VAR:?message}를 사용하여 변수를 필수 항목으로 만들 수 있습니다. 변수가 없으면 Compose가 지정한 메시지와 함께 중단되므로 잘못된 구성을 초기에 발견할 수 있습니다.
environment:
API_KEY: ${API_KEY:?API_KEY must be set}env_file 지시문
치환만 하는 것이 아니라 변수 파일 전체를 컨테이너에 직접 전달하려면 env_file을 사용합니다. 각 줄은 컨테이너 환경 변수가 됩니다.
services:
api:
image: myapi:1.0
env_file:
- api.env우선순위 규칙
변수가 여러 곳에서 정의되면 Compose는 우선순위를 적용합니다. 셸 환경 변수는 .env보다 우선하고, 명시적으로 지정한 environment: 항목은 env_file보다 우선합니다.
- 셸 / CLI
-e가 가장 높은 우선순위를 가집니다 - 그다음은
environment:입니다 - 그다음은
env_file입니다 - 마지막은 이미지 기본값입니다
확정된 값 확인하기
docker compose config을 실행하면 모든 치환이 적용된 완전히 확정된 Compose 파일을 출력합니다. 실제로 무엇이 실행될지 확인할 때 매우 유용합니다.
docker compose configGit에 비밀 정보 저장하지 않기
자리 표시자가 포함된 .env.example을 커밋하고, 실제 .env는 .gitignore에 추가합니다. 실제 운영 환경의 비밀 정보에는 환경 변수보다 Docker secrets를 사용하는 것이 좋습니다.
# .gitignore
.env빠른 확인
치환에서 기본값은 어떻게 작동하나요?
복습
이제 환경 데이터로 Compose를 깔끔하게 구성할 수 있습니다.
environment:는 서비스별로 변수를 주입합니다.env파일은${VAR}치환에 값을 제공합니다:-는 기본값을 지정하고,:?는 필수값을 표시합니다docker compose config은 확정된 결과를 보여 줍니다
이를 통해 하나의 Compose 파일을 모든 환경에서 이식성 있게 사용할 수 있습니다.
AI 튜터와 함께 Docker & DevOps Fundamentals을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 12
- 레슨
- 48
자주 묻는 질문
“환경 변수와 .env 파일” 강의는 무료인가요?
네 — “환경 변수와 .env 파일” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Docker & DevOps Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“환경 변수와 .env 파일”에서 뭘 배우나요?
환경 변수와 변수 치환, .env 파일을 사용해 Compose 서비스를 깔끔하게 구성하고, 개발·스테이징·운영 환경에서 하나의 Compose 파일을 사용하는 방법을 배워 보세요. 브라우저에서 직접 실행하는 실습 코드로 Docker & DevOps Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Docker & DevOps Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Docker & DevOps Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“환경 변수와 .env 파일” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Docker & DevOps Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Docker & DevOps Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Docker Compose란 무엇인가요?
- Compose 파일 작성
- 다중 서비스 앱 배포
- 환경 변수와 .env 파일