삽질/도커

Travis CI 에서 Docker 실행시 파일 권한 문제 (permission denied)

EpicArts 2020. 1. 23. 18:05

문제

mange.py를 사용하여 Travis 환경에서 Django서버를 실행하였으나,  

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./manage.py\": permission denied": unknown.

다음과 같은 에러가 발생하였다. 

 

환경

#Dockerfile
FROM python:3.8

RUN apt-get update
WORKDIR /app
ADD requirements.txt /app
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /app

ENTRYPOINT ["./manage.py", "runserver", "0:8000"]

Django 서버를 위한 Dockerfile를 위와 같이 만든 후 github의 master branch로 업로드하였다.

 

#.travis.yml
sudo: required
services:
  - docker

branches:
  only:
    - master

before_install:
  - docker build -t test-django .
  - docker run -d -p 80:8000 test-django
  - docker ps -a

travis 설정 파일은 다음과 같이 구성을 하였다.

 

 

git repo와 Travis-CI 가 연동이 되어 있기 때문에 자동으로 테스트를 수행하는데, 이때 docker build까지는 정상적으로 실행이 되었으나, 그 이후에 docker run에서 오류가 뜬다.

 

해결

#.travis.yml
sudo: required
services:
  - docker

branches:
  only:
    - master

before_install:
  - chmod +x ./manage.py
  - docker build -t test-django .
  - docker run -d -p 80:8000 test-django
  - docker ps -a

docker build 전에 mange.py에 대한 실행 권한을 추가시켰다. 

chmod +x ./mange.py

 

docker run 이 정상적으로 실행된다. 아무래도 win 환경에서 작업을 하다 보니까 권한 관련 문제가 생기지 않나 생각한다.