WORKDIR으로 작업 디렉터리를 전환하면 그 이후에 등장하는 모든 RUN, CMD, ENTRYPOINT, COPY, ADD 명령문은 해당 디렉터리를 기준으로 실행된다. 작업 디렉터리를 굳이 지정해주는 이유는 컨테이너 내부의 폴더를 깔끔하게 관리하기 위해서이다. 컨테이너도 미니 컴퓨터와 같기 때문에 Dockerfile을 통해 생성되는 파일들을 특정 폴더에 정리해두는 것이 추후에 관리가 쉽다. 만약 WORKDIR을 쓰지 않으면 컨테이너 내부에 존재하는 기존 파일들과 뒤섞여버린다. # 문법 WORKDIR [작업 디렉토리로 사용할 절대 경로] # 예시 WORKDIR /usr/src/app
app.txt, src, config.json 파일 만들기WORKDIR을 안 썼을 때 파일이 어떻게 구성되는 지 먼저 확인해보자.
FROM ubuntu COPY ./ ./ ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용 코드
$ docker build -t my-server . $ docker run -d my-server $ docker exec -it [Container ID] bash $ ls
WORKDIR을 썼을 때 파일이 어떻게 구성되는 지 확인해보자.
FROM ubuntu WORKDIR /my-dir COPY ./ ./ ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
$ docker build -t my-server . $ docker run -d my-server $ docker exec -it [Container ID] bash $ ls