본문 바로가기

DevOps/쿠버네티스(Kubernetes)

[쿠버네티스 #tip3] 컨테이너 안에서 쉘 스크립트를 사용할 때 경로지정

728x90

최근 python 코드를 컨테이너로 패기징 할 때 발견한 문제다.

 

지금까지는 python .py 파일을 실행시키는 Container를 만들기 위해 Dockerfile을 작성했는데

 

이번엔 .py파일이 아닌 쉘 스크립트 파일을 실행시켜야했다.

 

처음 마주하는 문제였지만 어차피 python이니까 당연히 될 거라고 생각했고 

 

FROM python:2.7
WORKDIR /app
ADD . /app

RUN apt-get update

# COPY requirements.txt .
# Application

RUN pip install -r requirements.txt

CMD ["sh", "./apps/example.sh"]

위처럼 Dockerfile을 작성했다.

 

python 2.7버전에 

requirements.txt에 적힌 패키지를 pip로 설치하고

 

최종적으로 apps폴더안에 있는 eample.sh 을 실행시키는 컨테이너다.

 

이미지를 만들고 docker hub 에 업로드하고 작성한 yaml파일로 쿠버네티스 클러스터에 배포를 했더니

 

역시 실패했다.

 

log를 찾아 봤는데 원인은 import한 파일의 위치를 찾지 못하는 것 이었다.

 

구글링을 해본 결과

 

kubernetes 상에서 sh 명령어를 실행시킬 때는 '상대경로'가 아닌 '절대경로' 로 코딩을 해줘야한다고 한다.

 

쉘 스크립트 코드를 

 

/../../apps/lib 이런식의 코드를 전부

 

/app/apps/lib 절대경로로 바꿔주자 온전히 실행되었다. 

 

 

 

* 근데 궁금한 점이 실험은 아직 해보지 않았지만 쿠버네티스 상에서 돌릴때만 이런현상이 발생하는 것일까? 아니면 도커 컨테이너 자체에서도 이런 현상이 발생할까? 실험해보고 결과를 올려보겠다.

반응형