본문 바로가기
Infra

Dockerfile 작성시 RUN, CMD 구분하기

by GOMJ 2024. 9. 15.

이번에 프로젝트를 진행하며 Dockerfile로 이미지 빌드가 필요했다.

 

해당글은 Dockerfile을 만들면서 겪었던 오류에 대해 기록하는 글이다.

 

아무 생각없이 RUN, CMD 구분없이 Dockerfile을 처음에 작성했다..

 

최종적으로 내가 필요한건 node production 모드로 빌드후 dist 패키지 파일이 필요했는데 이게 빌드 과정에서 찍을땐 보이는데 컨테이너 실행후 해당 경로를 로컬 호스트에 volume 바인드하여 가져오면 파일이 아무것도 없는것이었다..

 

그래서 원인을 찾다보니 RUN과 CMD를 내맘대로 사용했던것이 원인이었다..

 

Dockerfile을 작성하면서 RUN은 패키지를 설치할때 사용해야한다. 즉 이미지를 빌드할때 필요한 명령어는 RUN을 사용해야 한다.

 

그렇다면 CMD는 언제 쓰나면 마지막으로 이미지 빌드후 컨테이너를 실행할때 사용할 명령어를 써야하는 것이었다.

 

즉 RUN은 이미지 빌드에 필요한 패키지 설치나, 빌드시에 해야할 일을 할때 쓰고, CMD는 컨테이너를 실행할때 실제로 사용할 명령어이다.

 

즉 마지막에 실제로 컨테이너에서 실행이 필요한 명령어는 CMD로 작성하면 된다!