수복의 프로그래밍 여행기
article thumbnail

방법

WORKDIR 은 컨테이너 내부에서 작업 디렉토리로 설정하는 명령어 입니다.

 

이러한 작업 디렉토리를 설정하는 이유는 내부 폴더를 깔끔하게 관리하기 위함입니다. 

 

파일 및 폴더가 정리 되어야 찾기 쉽듯이 작업 디렉토리도 깔끔하게 정리하도록 해당 디렉토리를 설정하는 명령어 입니다.

WORKDIR [작업 디렉토리로 사용하게 될 절대 경로]

 

작업 디렉토리를 app 이라는 폴더로 정하고 싶을 때 아래와 같이 명령어를 사용합니다.

WORKDIR /app

 

그렇다면 이미지는 ubuntu 로 작업 디렉토리는 app 폴더로 지정하며, 복사할 파일을 copy_folder라고 지정하면

 

dockerfile은 아래와 같이 구현됩니다.

 

이렇게 만들어진 dockerfile 을 실행하면 시작 장소도 WORKDIR 로 변경됩니다.

 

 

그리고 원하는 폴더가 복사된 것을 알 수 있습니다.

 

사실 여기서 굳이 WORKDIR 을 사용하지 않고 RUN 명령어 안에 CD 문법을 사용해도 되지 않을까 의문의 제기 될 수 있다.

 

RUN 과 WORKDIR 의 차이점

도커 파일에서 RUN을 이용하여 app폴더를 만든 후 test.txt 파일을 생성한다면?

 

FROM ubuntu
RUN mkdir -p /app
RUN cd /app
RUN touch test.txt

 

로 가능합니다.

 

만약 WORKDIR 명령어를 사용한다면 아래와 같이 가능합니다.

FROM ubuntu
WORKDIR /app
RUN touch test.txt

 

그런데 두 가지는 차이점이 있습니다.

 

먼저 RUN 명령어는 RUN 명령어 내에서만 유효하며, 다음 RUN에서는 다시 초기 디렉토리(/ 루트)로 돌아감!

 

그래서 touch test.txt는 /app이 아닌 /(루트)에서 실행되어 루트에 test.txt 파일이 생성됩니다.

 

하지만, WORKDIR /app 은 위의 사진과 같이 시작점부터 달라집니다.

 

즉, /app을 기준으로 실행되기에 test.txt 파일은 app 폴더 내에 생성됩니다.

 

명령어 실행 시점 지속 여부 사용 목적
WORKDIR 이미지 빌드 중 ✅ 영구적 (이미지에 반영됨) 컨테이너 실행 시 기본 디렉토리 설정
RUN cd 개별 RUN 실행 중  ❌ RUN 명령어가 끝나면 초기화됨 한 번만 특정 디렉토리 이동

 

반응형
profile

수복의 프로그래밍 여행기

@컴수복

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!