inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

WORKDIR : 작업 디렉토리를 지정

workdir 대신에 RUN mkdir /directory COPY 상대경로 /directory/복사할파일 이런식으로 구현해도 되나요 ?

해결된 질문

287

수하

작성한 질문수 31

0

둘 중 뭐가 보편적으로 사용되는 편인지 궁금합니다!

 

 

1번 사안

WORKDIR /directory

 

2번 사안

RUN mkdir /directory

COPY [복사할 파일의 상대경로] [/directory/복사할 파일]

docker docker-compose docker-volume docker-image container ecr

답변 2

1

JSCODE 박재성

안녕하세요 수하님!

상황에 따라 조금 다를 수 있을 것 같네요.

 

만약 작업하고자 하는 폴더를 생성하는 의도로 사용할 때는

WORKDIR 명령어를 사용할 것 같습니다.

한편, 작업하고자 하는 폴더를 생성하는 의도가 아닌 단순 폴더 생성을 위한 의도라면

WORKDIR 보다는 RUN mkdir ____ 의 명령어를 사용할 것 같네요.

 

위 2가지 방법의 차이는 작동 방식에는 크게 차이가 없습니다.

하지만 우리는 코드를 작성할 때 항상 가독성을 신경써야 하며,

다른 개발자들이 Dockerfile을 읽었을 때 의도를 빠르게 이해할 수 있도록 코드를 작성해야 합니다!

 

이런 관점에서 2가지 방식 중 어떤 방식을 활용하는 게 나은 지 판단해보시기 바랍니다:D

 

1

수하

감사합니다!!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

수하님, Dockerfile에서 WORKDIRRUN mkdir /directory + COPY 명령어의 차이에 대해 질문해 주셨군요. 이 둘의 사용 방법과 보편성을 비교한 유사한 질문들이 있어 아래에 링크를 포함하여 설명 드립니다.

Dockerfile에서 워킹 디렉토리 설정 및 파일 복사 방법

  1. WORKDIR 사용:
WORKDIR /directory
COPY [복사할 파일의 상대경로] .

WORKDIR 명령어는 이후 명령어들이 실행될 기본 디렉토리를 설정하며, 설정한 디렉토리가 없으면 자동으로 생성합니다. 이 방법은 가독성이 높고, 복사할 파일의 경로가 설정된 디렉토리를 기준으로 간단하게 지정할 수 있습니다.

  1. RUN mkdir과 COPY 사용:
RUN mkdir /directory
COPY [복사할 파일의 상대경로] /directory/복사할 파일

이 방법은 명시적으로 디렉토리를 만들고 여러 파일을 특정 경로에 복사할 때 사용할 수 있습니다. 그러나 해당 작업을 여러 번 반복해야 할 경우, verbosity(冗長)이 증가할 수 있습니다.

어떤 방법이 보편적으로 사용되나요?

WORKDIR을 활용하는 방식이 더 보편적이며, 가독성과 유지보수 측면에서 권장됩니다. 이유는:
- WORKDIR 명령어는 이후 모든 경로 명령어의 기준 디렉토리를 자동으로 설정하여 실수를 줄일 수 있습니다.
- 리더블한 구조로 되어 있어 다른 개발자들이 Dockerfile을 쉽게 이해하고 수정할 수 있습니다.

아래 링크를 참고하시면 유사한 내용에 대해 더 많은 정보를 얻으실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

64

2

AWS ECR

0

58

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

88

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

73

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

73

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

70

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

187

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

86

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

101

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

121

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

87

2