환경 변수란? 운영체제에서 실행되는 프로세스들이 설정된 특정 값을 참조하거나 동적으로 설정할 수 있도록 하는 방법이다.
Docker에서 환경변수는 중요한 역할을하며, 컨테이너 내부에서 동작하는 애플리케이션에 설정을 전달하는 수단이다. 예를 들어, 데이터베이스 연결 정보, API 키, 포트 설정 등이 포함될 수 있다.
Docker에서 환경변수를 설정하는 방법
1. `e` 또는 `--env` 옵션 사용
`docker run` 명령어에서 -e 또는 --env 옵션을 사용하여 환경변수를 설정할 수 있다.
docker run -e "ENV_VAR_NAME=value" {image명}
- 이 명령어는 `ENV_VAR_NAME` 이라는 이름의 환경변수를 `value`로 설정한 상태로 지정한 이미지 컨테이너를 실행한다.
2. `.env` 파일 사용
환경변수를 여러 개 사용할 때, .env 파일을 만들어 한 번에 로드할 수 있다.
# test.env 파일
ENV_VAR1=value1
ENV_VAR2=value2
- 이 파일을 Docker 컨테이너에 로드하려면 `--env-file` 옵션을 사용한다.
docker run --env-file {env파일경로/env파일명} {이미지명}
3. Docker Compose에서 환경변수 사용
Docker Compose 파일에서도 환경변수를 설정할 수 있으며, 파일의 environment 섹션에서 환경 변수를 정의한다.
# yaml
version: '1'
services:
web:
image: {이미지명}
environment:
- ENV_VAR_NAME1=value1
- ENV_VAR_NAME2=value2
4. Dockerfile에서 환경변수 설정
Dockerfile에서 `ENV` 명령어를 사용해 이미지를 빌드할 떄 기본 환경변수를 설정할 수 있다.
#Dockerfile
FROM ubuntu:latest
ENV MY_ENV_VAR=my_value
예제를 통해 환경변수 익혀보기
Python 애플리케이션을 통한 환경변수 활용
1. Python 프로젝트 생성 및 이동
mkdir python-docker-env # 프로젝트 디렉토리 생성
cd python-docker-env # 생성한 디렉토리로 이동
2. Python 스크립트 파일 작성
nano test.py
- nano 편집기 또는 vim, vi 등을 사용
# test.py
import os
greeting = os.getenv("GREETING", "Hello")
name = os.getenv("NAME", "World")
print(f"{greeting}, {name}!")
3. Dockerfile 작성
nano Dockerfile # Dockerfile 작성
# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY test.py /app
CMD ["python", "test.py"]
4. env 파일 작성
nano .env # .env 파일 작성
#.env
GREETING=Hey
NAME=Jay
5. Docker 이미지 빌드
docker build -t python-env-test . # Docker 이미지 빌드
- docker build 명령어를 사용하여 현재 디렉토리에 있는 Dockerfile을 기반으로 Docker 이미지를 빌하며, -t 옵션을 사용하여 이미지를 python-env-test 라는 이름으로 태그
6. Docker 컨테이너 실행
- 기본 환경변수로 실행
docker run --rm python-env-test
- 환경변수를 전달하여 실행
docker run --rm -e GREETING="What's" -e NAME="up" python-env-test
- .env 파일을 사용하여 실행
docker run --rm --env-file .env python-env-test
'DevOps > Docker' 카테고리의 다른 글
Docker(7) - 이미지 push (0) | 2024.08.27 |
---|---|
Docker(6) - 볼륨 마운트 (0) | 2024.08.21 |
Docker(4) - Docker 이미지 레이어 (0) | 2024.08.21 |
Docker(3) - Docker 라이프사이클 및 유용한 명령어 (0) | 2024.08.20 |
Docker(2) - 도커를 위한 환경세팅 및 도커 레지스트리 (0) | 2024.08.20 |