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 절대경로로 바꿔주자 온전히 실행되었다.
* 근데 궁금한 점이 실험은 아직 해보지 않았지만 쿠버네티스 상에서 돌릴때만 이런현상이 발생하는 것일까? 아니면 도커 컨테이너 자체에서도 이런 현상이 발생할까? 실험해보고 결과를 올려보겠다.
반응형
'DevOps > 쿠버네티스(Kubernetes)' 카테고리의 다른 글
[쿠버네티스 #6] Kubernetes metallb를 사용한 로드밸런서 타입 서비스 배포 (0) | 2020.03.08 |
---|---|
[쿠버네티스 #5] Docker compose와 kubernetes의 차이 (0) | 2020.03.01 |
[쿠버네티스 #tip2] 파이썬으로 만든 컨테이너에서 print출력이 되지 않을 때 (0) | 2020.02.04 |
[쿠버네티스 #4] Replica set 과 Deployment (0) | 2020.01.29 |
[쿠버네티스 #3] Service (0) | 2019.12.26 |