💡 해당 글은 node.js 프로젝트를 환경 변수를 사용하여 이미지로 build 하는 예제입니다. (예제는 node.js로 했지만 환경 변수를 사용하는 방법이 나오니 끝까지 봐주세요!)
▶︎ 환경 변수란?
소프트웨어 애플리케이션에서 사용되는 설정이나 구성 값들을 저장하는 데 사용되며, 시스템 환경과는 분리되어 어플리케이션을 유연하게 설정할 수 있게 해준다.
ex) 애플리케이션 PORT, 도메인 주소, 자격증명, 개인 키 등
▶︎ 환경 변수를 사용 하는 방법
1. 도커파일 내에서 환경 변수를 직접 정의
2. 환경 변수 파일 생성
방법1. 도커 파일 내에서 환경 변수를 직접 정의
▶︎ 도커 파일 작성
✔︎ ENV 옵션을 사용하면 된다.
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
ENV PORT 80 # 환경 변수 정의
EXPOSE $PORT
CMD [ "npm", "start" ]
⇢ ENV PORT 80 : PORT는 환경 변수의 '이름'을 지정한 것이며 80은 환경 변수의 DEFAULT 값을 지정한 것
⇢ EXPOST $PORT : $PORT는 위에서 정의한 환경 변수를 사용한 것이며 $를 사용해서 환경 변수를 사용했음을 알림
▶︎ 도커 실행 명령어
✔︎ --env 또는 -e 옵션을 사용하여 환경 변수를 지정해줄 수 있다.
✔︎ 환경 변수가 여러 개인 경우 key=value 형태로 계속 나열 해주면 된다.
→ docker run -d --rm -p 3000:8000 --env PORT=8000 --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
→ docker run -d --rm -p 3000:8000 -e PORT=8000 --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
→ docker run -d --rm -p 3000:8000 -e PORT=8000 -e KEY=VALUE --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
⇢ 아까 DEFAULT 값은 80이였지만 이렇게 run 할 때 값을 넣어주면 8000이라는 값으로 환경변수가 셋팅되어 작동한다.
방법2. 환경 변수 파일 생성
▶︎ .env 파일 생성 후 아래 코드 작성
✔︎ key=value 형태로 작성
PORT=8000
▶︎ 도커 실행 명령어
✔︎ --env-file 옵션을 사용하여 환경 변수 파일을 지정해줄 수 있다.
→ docker run -d --rm -p 3000:8000 --env-file ./.env --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
⇢ ./.env 는 .env 파일이 현재 디렉토리에 있다는 것을 의미한다. 따라서 현재 디텍토리에 있는 .env 파일을 환경 변수 파일로 사용하겠다는 의미
어떤 방법이 더 좋을까?
✔︎ 환경 변수는 보통 런타임시에 사용되는 별도의 환경 변수 파일로 이동 시킨다. 그렇지 않으면 값이 이미지에 포함되며 docker history <이미지> 명령어를 통해 이 환경 변수 값을 읽을 수 있다고 한다. 따라서 환경 변수 파일을 생성하여 사용하는 것을 권장한다.
✔︎ 별도의 파일을 생성하여 사용하는 경우 소스 컨트롤 저장소의 일부분으로 커밋하지 않도록 조심해야한다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] Dockerfile에서 빌드 인수 ARG 사용하기 (0) | 2023.12.24 |
---|---|
[Docker] 알아두면 편리한 도커 명령어&옵션 (1) | 2023.12.23 |