HwangHub

Working Directory 명시하기 본문

DEV-STUDY/Infra

Working Directory 명시하기

HwangJerry 2023. 7. 23. 21:07

도커파일을 보다보면 WORKDIR이란 게 있습니다. 이건 뭘까요?

working directory란?

이미지 내부에서 어플리케이션 소스코드를 저장할 디렉토리를 의미합니다. 이를 설정하기 위해서는 도커파일에 WORKDIR 명령어를 이용하여 우리의 어플리케이션 소스코드 저장 디렉토리를 생성할 수 있습니다.

WORKDIR /usr/src/app

 

그런데 왜 별도로 working directory를 지정해야 할까요?

 

WORKDIR을 지정하지 않고 냅다 COPY만 해서 이미지를 생성할 경우, 만약 base image가 가지고 있던 파일과 내가 이미지로 빌드할 어플리케이션의 파일 이름이 겹친다면 베이스 이미지의 파일이 덮어쓰기를 당하게 됩니다. 또한 당연히 모든 파일이 이미지 내의 root 경로에 전부 때려박아지니 이미지를 들여다 볼때 너무 중구난방으로 어지럽게 파일이 배치되게 됩니다.

 

이러한 이유로 어플리케이션 소스 파일들을 별도의 workdir을 설정하는 것을 권장하고 있습니다. 이런걸 적용한 도커파일의 예시는 다음과 같습니다.

FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
WORKDIR /usr/src/app
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","-Duser.timezone=Asia/Seoul","-Dspring.profiles.active=client","/usr/src/app/app.jar"]

 

위 설정에서 WORKDIR을 설정할 때 주의할 점은, ENTRYPOINT에도 실행할 jar 파일의 경로를 위와 같이 수정해줘야 한다는 것입니다.
기존에는 도커파일의 ENTRYPOINT에 "/app.jar"로만 되어있었는데, WORKDIR을 설정한 뒤 "usr/src/app/app.jar"로 수정된 것을 볼 수 있습니다.

 

'DEV-STUDY > Infra' 카테고리의 다른 글

AWS EC2(우분투)에 도커 이미지 배포하기  (0) 2023.08.17
도커 컴포즈란?  (0) 2023.07.24
도커 이미지 실행하기  (0) 2023.07.22
도커 이미지 생성하기  (0) 2023.07.22
도커 커맨드 분석  (0) 2023.07.22
Comments