Docker & DevOps Fundamentals · 강의

환경 변수와 .env 파일

환경 변수와 변수 치환, .env 파일을 사용해 Compose 서비스를 깔끔하게 구성하고, 개발·스테이징·운영 환경에서 하나의 Compose 파일을 사용하는 방법을 배워 보세요.

레슨 4/413개 단계

환경 변수와 .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 config

Git에 비밀 정보 저장하지 않기

자리 표시자가 포함된 .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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Docker Compose란 무엇인가요?
  2. Compose 파일 작성
  3. 다중 서비스 앱 배포
  4. 환경 변수와 .env 파일
← Docker & DevOps Fundamentals(으)로 돌아가기