오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-09 00:00
관리 메뉴

우노

[Docker] 환경 변수 전달 본문

DevOps/Docker

[Docker] 환경 변수 전달

운호(Noah) 2023. 2. 14. 18:19

들어가기 앞서,

  • 해당 포스트에선, Docker에서 매개 변수 및 환경 변수를 다루는 방법에 대해서 다뤄보겠습니다.

이미지 빌드 시 Dockerfile 내부로 매개 변수 전달

  • Dockerfile

      # FROM절 이전에 선언한 매개변수는 FROM절 이전에만 사용할 수 있습니다.
      ARG imageversion
    
      FROM python:${imageversion}
    
      # FROM절 이후에 선언한 매개변수는 FROM절 이후에만 사용할 수 있습니다.
      ARG foldername
    
      RUN mkdir ${foldername}
    • 입력 받을 매개변수를 ARG를 사용해 미리 선언해야합니다.
  • 이미지 빌드

      docker build -t <image-name> . --build-arg imageversion="3.9.15" --build-arg foldername="hello"
    • 원하는 매개 변수 개수 만큼 --build-arg 옵션을 할당해야합니다.

컨테이너 생성 시 컨테이너 내부로 환경 변수 전달

  • 해당 방식은 2가지 방법으로 진행할 수 있습니다.

    • Dockerfile 내부에 환경 변수를 선언하는 방식

        FROM python:3.9.15
      
        # 컨테이너 내부 적용할 환경 변수 설정
        ENV foldername=hello
    • 컨테이너 생성 명령 시 환경 변수를 전달하는 방식

        docker run -d -it -e foldername=hello <image-name> /bin/bash
      • 원하는 환경 변수 개수 만큼 -e 옵션을 할당해야합니다.
  • 적용된 환경 변수는 생성한 컨테이너에 접속한 뒤, env 명령어를 통해 확인할 수 있습니다.

응용

  • 앞서 설명한 방식들은 아래와 같이 응용할 수 있습니다.

    • 이미지 빌드 과정에서 Dockerfile 내부로 매개 변수를 전달한 뒤,
    • 해당 매개 변수를 컨테이너의 환경 변수로 설정하는 방법
  • Dockerfile

      # 이미지 빌드 시 전달 받은 매개 변수를 적용
      ARG imageversion
    
      FROM python:${imageversion}
    
      # 이미지 빌드 시 전달 받은 매개 변수를 컨테이너 내부 환경 변수로 설정
      ARG foldername
    
      ENV foldername=${foldername}
  • 이미지 빌드

      docker build -t <image-name> . --build-arg imageversion="3.9.15" --build-arg foldername="hello"
  • 컨테이너 생성

      docker run -d -it <image-name> /bin/bash
  • 컨테이너에 접속한 뒤, 적용된 환경 변수 확인

      env
Comments