[파이썬] 도커 컨테이너와 호스트 간 환경 변수 공유

도커 컨테이너는 가상화된 환경에서 실행되기 때문에 기본적으로 호스트의 환경 변수와는 독립적으로 동작합니다. 하지만 때로는 컨테이너와 호스트 간에 환경 변수를 공유해야 하는 경우가 있습니다. 이번 블로그 포스트에서는 도커 컨테이너와 호스트 간에 환경 변수를 공유하는 방법을 파이썬을 예시로 들어 알아보겠습니다.

1. 호스트에서 환경 변수 설정하기

우선, 호스트에서 환경 변수를 설정해야 합니다. 환경 변수를 설정하는 방법은 운영체제에 따라 다를 수 있지만, 여기서는 간단한 명령어를 사용하여 설정해보겠습니다. 예를 들어, MY_ENV_VARIABLE이라는 환경 변수를 설정하려면 다음과 같이 터미널에서 명령어를 실행합니다.

export MY_ENV_VARIABLE="Hello from host!"

이렇게 설정한 환경 변수는 현재 터미널 세션에서만 유지되므로, 다른 터미널 세션에서는 설정되어 있지 않습니다.

2. 도커 컨테이너에서 환경 변수 사용하기

이제 설정한 환경 변수를 도커 컨테이너에서 사용하는 방법을 알아보겠습니다. 우선, 필요한 Python 패키지를 설치하기 위해 Dockerfile을 작성합니다.

FROM python:3.9

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

CMD ["python", "app.py"]

위의 예시에서는 현재 디렉토리의 소스 코드를 /app 디렉토리로 복사하고, requirements.txt에 명시된 패키지들을 설치합니다. 마지막으로 app.py 파일을 실행하여 애플리케이션을 실행합니다.

3. 애플리케이션에서 환경 변수 사용하기

이제 애플리케이션 코드에서 설정한 환경 변수를 사용하도록 설정해보겠습니다. app.py 파일에 다음과 같은 코드를 추가합니다.

import os

env_variable = os.environ.get("MY_ENV_VARIABLE")

if env_variable:
    print(f"환경 변수 값: {env_variable}")
else:
    print("환경 변수가 설정되어 있지 않습니다.")

위의 코드에서 os.environ.get("MY_ENV_VARIABLE")를 호출하여 환경 변수 값을 가져옵니다. 가져온 값이 있을 경우, 해당 값이 출력됩니다. 환경 변수가 설정되어 있지 않은 경우에는 “환경 변수가 설정되어 있지 않습니다.”라는 메시지가 출력됩니다.

4. 도커 컨테이너 실행하기

마지막으로, 도커 컨테이너를 실행해보겠습니다. 다음 명령어를 사용하여 도커 이미지를 빌드하고 컨테이너를 실행합니다.

docker build -t my-app .
docker run my-app

이제 실행된 애플리케이션에서는 호스트에서 설정한 환경 변수 값을 사용할 수 있습니다. 출력된 결과를 확인해보면, “환경 변수 값: Hello from host!”라는 메시지가 출력될 것입니다.

결론

도커 컨테이너와 호스트 간에 환경 변수를 공유하는 방법을 알아보았습니다. 이를 통해 컨테이너 안에서 호스트의 환경 변수를 사용할 수 있으며, 이는 컨테이너와 호스트 간의 유연한 상호작용을 가능하게 합니다. 예제로 파이썬 애플리케이션을 사용했지만, 이와 유사한 방식으로 다른 프로그래밍 언어나 도구에서도 환경 변수를 공유할 수 있습니다.