0Pricing
DevOps Bootcamp · 강의

환경 변수와 .env 파일

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

환경 변수와 .env 파일은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 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 파일을 모든 환경에서 이식성 있게 사용할 수 있습니다.

자주 묻는 질문

“환경 변수와 .env 파일” 강의는 무료인가요?

네 — “환경 변수와 .env 파일” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“환경 변수와 .env 파일”에서 뭘 배우나요?

환경 변수와 변수 치환, .env 파일을 사용해 Compose 서비스를 깔끔하게 구성하고, 개발·스테이징·운영 환경에서 하나의 Compose 파일을 사용하는 방법을 배워 보세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“환경 변수와 .env 파일” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

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