728x90
개요
Docker 컨테이너를 구성할 때 가장 중요한 명령어 중 하나인 WORKDIR에 대해 자세히 알아보겠습니다. WORKDIR은 Dockerfile에서 컨테이너의 작업 디렉토리를 설정하는 핵심 명령어입니다.
WORKDIR이란❓
WORKDIR 명령어는 Dockerfile에서 이어지는 명령어들( RUN, CMD, ENTRYPOINT, COPY, ADD 등 )이 실행될 작업 디렉토리를 설정합니다. 쉽게 말해서 컨테이너 내부에서 cd 명령어를 실행하는 것과 비슷한 효과를 가집니다.
- WORKDIR을 설정하면 그 이후의 모든 Docker 명령어(RUN, CMD, ENTRYPOINT, COPY, ADD)가 해당 디렉토리를 기준으로 실행됩니다.
- 이는 마치 터미널에서 cd 명령어로 디렉토리를 이동하는 것과 비슷한 효과를 가집니다.
- 컨테이너가 실행될 때도 이 디렉토리가 기본 작업 디렉토리가 됩니다.
WORKDIR 실제 사용 예시 분석
1. 상대 경로의 의미
- COPY . ./에서 첫 번째 .은 도커 컨텍스트의 현재 디렉토리를 의미합니다.
- 두 번째 ./는 WORKDIR로 설정된 /app 디렉토리를 가리킵니다.
- 따라서 모든 소스 파일이 /app 디렉토리로 복사됩니다.
2. 명령어 실행 컨텍스트
- WORKDIR /app 설정 후의 모든 명령어(COPY, RUN)는 /app 디렉토리를 기준으로 실행합니다.
- ./gradle clean build 명령도 /app 디렉토리에서 실행됩니다.
WORKDIR 사용 시 주의 사항
1. 명시적인 경로 설정
WORKDIR이 설정되지 않으면 파일의 복사 위치나 명령어 실행 위치가 불분명해질 수 있습니다.- 항상 명확한 WORKDIR 설정을 통해 작업 컨텍스트를 지정하는 것이 좋습니다.
2. 상대 경로 사용 시 주의
- . 또는 ./와 같은 상대 경로 사용 시 현재 WORKDIR을 정확히 인지해야 함
- 잘못된 경로 참조는 빌드 오류나 런타임 문제를 일으킬 수 있음
- 현재 앞선 dockerfile은 아주 간단하기 때문에 WORKDIR이 무엇인지 찾아보는 것은 쉽겠지만 파일이 복잡해진다면 더욱 어려워 질 것입니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.12.07 - 스냅샷(Snapshot)이란? (0) | 2024.12.07 |
---|---|
[TIL, 일일 회고] 2024.12.06 - Docker : RUN, CMD, ENTRYPOINT 명령어의 차이점알아보기 (0) | 2024.12.06 |
[TIL, 일일 회고] 2024.12.04 - JIT 컴파일러를 통한 자바의 성능 최적화 (0) | 2024.12.04 |
[TIL, 일일 회고] 2024.12.03 - BufferedReader 사용 시 예외처리가 필요한 이유 (IOException, throws) (0) | 2024.12.03 |
[TIL, 일일회고] 2024.12.02 - Docker 실행 중인 컨테이너 한 번에 종료(삭제)하는 방법 (0) | 2024.12.02 |