본문 바로가기

[Docker] Dockerfile에서 빌드 인수 ARG 사용하기

@suhyeon chae2023. 12. 24. 15:11

💡 이번 글은 node.js 프로젝트 빌드 인수를 사용하여 이미지로 build 하는 예제입니다. (예제는 node.js로 했지만 빌드 인수를 사용하는 방법이 나오니 끝까지 봐주세요!)

 

❗️이번 포스트를 읽기 전에 도커 환경 변수를 사용하는 법에 대해 알고 싶다면 이전 포스트를 참고해주세요!

https://suhyeon-developer.tistory.com/26

 

[Docker] Dockerfile에서 환경변수 사용하기

💡 해당 글은 node.js 프로젝트를 환경 변수를 사용하여 이미지로 build 하는 예제입니다. (예제는 node.js로 했지만 환경 변수를 사용하는 방법이 나오니 끝까지 봐주세요!) ▶︎ 환경 변수란? 소프

suhyeon-developer.tistory.com

 

 

▶︎ 빌드 인수란?

빌드 인수(Build Arguments)는 Docker 이미지를 빌드하는 동안 Dockerfile 내에서 전달되는 매개변수이다. 이 매개변수는 빌드 프로세스 중에만 사용되며, 이미지의 최종 레이어에는 영향을 미치지 않는다. 빌드 인수를 사용하면 빌드 과정에서 동적으로 값을 전달하고 이미지를 더 유연하게 구성할 수 있다.

 

▶︎ dockerfile 작성

✔︎ ARG 명령어 사용

FROM node:14

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

ARG DEFAULT_PORT=80

# 인수 사용
ENV PORT $DEFAULT_PORT

# 위에서 정의한 환경 변수 사용
# $를 붙여줘서 환경변수임을 알린다.
EXPOSE $PORT

CMD [ "npm", "start" ]
→ ARG로 선언한 DEFAULT_PORT 인수는 dockerfile에서만 사용 가능하며 모든 명령어에서 사용할 수 있는 것도 아님
CMD 명령어에서는 사용 불가(ARG는 컨테이너가 시작될 때 실행되는 런타임 명령이기 때문)

 

 

▶︎ docker 실행 명령어

✔︎ --build-arg 명령어 사용

→ docker build -t feedback-node:dev --build-arg DEFUALT_PORT=8000 .

⇢ 실행할 때 인자값을 전달한다. 도커 파일에서는 80 포트로 지정해도 위 명령어에서 지정하듯 8000포트로 새롭게 인자를 전달하면 8000으로 들어가며, 해당 --build-arg 옵션을 사용 안할 경우 defualt 값인 80 포트로 이미지 빌드가 진행된다.

 

suhyeon chae
@suhyeon chae :: 번아웃을 이겨내는중

신입 개발자 입니다 😃 github 주소 : https://github.com/chaesuhyeon

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차