[Docker] Argument & Environment Variables

업데이트:

jpg


Argument & Environment variables

3.png

ENV

하드코딩이 아닌 환경변수를 Global하게 설정해줄 수 있음 (ex. PORT 같은 경우)

  • 실행 코드가 환경변수를 기반으로 실행되도록 변경
      /* server.js
        
       */
      app.listen(process.env.PORT);
    
  1. Dockerfile에서 환경변수 지정
     # Dockerfile
     ...
     COPY . .
        
     ENV PORT 80
        
     EXPOSE $PORT
     ...
    

    ⇒ 이미지 Re-build

  2. Docker shell에서 지정
    • --env Key=Value 또는 -e Key=Value 사용 가능
     docker run -d --rm -p 3000:8000 --env PORT=8000 --name feedback-app - v ...
        
     # 여러개인 경우
     -e key1=val1 -e key2=val2 ...
    
  3. .env 파일로 지정
    • --env-files <file_path>
     # .env 파일
     PORT=8000
    
     docker run -d --rm -p 3000:8000 --env-files ./.env --name feedback-app - v ...
    

ARG

  • Dockerfile의 일부를 변경하고 이미지를 re-build 해야되는 경우 (ex. PORT별로 이미지 빌드)
  1. Dockerfile에서 ARG 지정
    • ARG <KEY>=<VALUE>
     # Dockerfile
     ...
     COPY . .
        
     ARG DEFAULT_PORT=80
        
     ENV PORT $DEFAULT_PORT
        
     EXPOSE $PORT
     ...
    
  2. Docker shell에서 지정
    • --build-arg <KEY>=<VALUE>
     docker build -t feedback-node:dev --build-arg DEFAULT_PORT=8000 .
    


Reference

Udemy - Docker & Kubernetes: The Practical Guide

댓글남기기