Docker의 컨테이너에 환경 변수 전달
-
-e
및-env
태그를 사용하여 Docker의 컨테이너에 환경 변수 전달 - 내보내기 명령을 사용하여 Docker의 컨테이너에 환경 변수 전달
-
-env
파일을 사용하여 Docker의 컨테이너에 환경 변수 전달
이 자습서에서는 Docker의 컨테이너에 환경 변수를 전달하는 방법을 소개합니다.
-e
및 -env
태그를 사용하여 Docker의 컨테이너에 환경 변수 전달
환경 변수를 생성하고 컨테이너에 전달하는 방법을 살펴보는 것으로 시작하겠습니다. 아래 명령을 사용하여 Docker 레지스트리에서 사용할 이미지를 가져와 시작하겠습니다.
$ docker pull ubuntu~$ docker pull ubuntu
출력:
Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
터미널에서 docker run -help
명령을 실행하여 사용법을 확인할 수 있는 -env
의 축약형 -e
태그를 사용할 것입니다. 이 인수를 사용하면 컨테이너에 전달할 환경 변수의 여러 키-값 쌍을 만들 수 있습니다.
다음은 단일 환경 변수를 생성하고 Ubuntu 이미지를 사용하여 생성한 컨테이너에 전달하는 방법입니다.
$ docker run -it -e DEMO=sample_variable ubuntu bash
출력:
root@3a20bc21d3c8:/# echo $DEMO
sample_variable
또한 -
의 여러 태그를 사용하여 아래와 같이 새 컨테이너를 생성하는 동안 실행 명령과 함께 간단히 연결하여 환경 변수를 생성할 수 있습니다.
$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash
이 두 가지 환경 변수를 전달하면 아래 명령을 사용하여 해당 값에 액세스할 수 있습니다. 변수 1의 이름을 DEMO1
로 지정했으며 아래에서 해당 값에 액세스할 수 있습니다.
root@9eee00d7ab01:/# echo $DEMO1
출력:
sample_variable1
마찬가지로 여기에 표시된 것처럼 변수 2를 인쇄할 수도 있습니다.
root@9eee00d7ab01:/# echo $DEMO2
출력:
sample_variable2
내보내기 명령을 사용하여 Docker의 컨테이너에 환경 변수 전달
또는 export 명령을 사용하여 환경 변수에서 함께 연결되는 것을 피할 수도 있습니다. 이 명령은 WSL과 함께 사용할 수 있는 Linux bash 셸용 기본 제공 유틸리티 도구입니다.
기존 변수에 영향을 주지 않고 환경 변수를 생성하고 자식 프로세스에 전달할 수 있습니다. 아래와 같이 환경 변수를 생성하는 것으로 시작하겠습니다.
isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword
환경 변수를 생성했으면 아래와 같이 생성 중인 컨테이너에 전달할 수 있습니다.
$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash
그런 다음 아래와 같이 echo 명령을 사용하여 변수의 각 값에 액세스하고 표시할 수 있습니다.
root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi
-env
파일을 사용하여 Docker의 컨테이너에 환경 변수 전달
디버그 공간을 더 많이 제공하는 더 나은 접근 방식은 대신 Docker 분해 파일을 사용하는 것입니다. 즉, 이제 도커 컨테이너를 시작할 때 환경 변수를 직접 전달할 필요가 없습니다.
이 방법은 환경 변수를 포함할 외부 .env
파일을 만들어야 함을 의미합니다. 아래 Linux 명령을 사용하여 홈 디렉토리에 이 파일을 만들 수 있습니다.
이 명령은 Linux vi 편집기를 선택하여 환경 변수 목록을 생성합니다.
$ vi env.list
vi 편집기 내에서 환경 변수를 키는 대문자로, 각각의 값은 소문자로 된 키-값 쌍으로 생성합니다. 전체 콜론을 누르고 wq 명령
을 입력하여 변수를 저장하고 종료합니다.
MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword
wq
ls
명령을 사용하여 env.list
파일이 성공적으로 저장되었는지 확인할 수 있습니다. 그러면 나열된 파일 중 env.list
가 포함된 해당 디렉토리의 파일 목록이 반환되어야 합니다.
아래와 같이 cat
명령을 사용하여 해당 목록의 항목을 볼 수도 있습니다.
$ cat env.list
출력:
MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword
일단 위치가 지정되면 이제 우분투 이미지를 실행하여 새 컨테이너를 만들고 전달할 변수를 저장한 경로를 지정할 수 있습니다.
env.list
파일은 이 예에서 홈 디렉토리에 저장됩니다. 따라서 다른 디렉토리 안에 있으면 경로가 다르게 보일 수 있습니다.
이러한 환경 변수를 새 컨테이너에 전달하려면 명령을 실행해야 합니다.
$ docker run -it --env-file ./env.list ubuntu bash
아래와 같이 변수를 인쇄하여 컨테이너에 환경 변수를 성공적으로 전달했는지 확인할 수 있습니다.
/# echo $MYSQL_USER
/# echo $MYSQL_PASS
출력:
Isaactonyloi
fakepassword
이전 방법 대신 전달하려는 모든 환경 변수가 포함된 템플릿 파일을 만들 수 있습니다. 이를 통해 변경하려는 경우 이 파일에서 생성된 환경 변수를 쉽게 재정의할 수 있습니다.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn