AWS Codepipeline에서 파일 실행 권한이 사라지는 문제

문제 발생

Dockerfile에서 ENTRYPOINT 스크립트를 실행하도록 변경했다. 이후 AWS Codebuild만 단독으로 실행하면 정상 작동했는데 Codepipeline으로 Codebuild를 실행하니 permission denied 에러가 발생했다. 참고로 docker run [SERVICE] [COMMAND] 를 실행하면 항상 ENTRYPOINT로 지정된 스크립트가 실행된다.

[Container] 2019/03/20 08:48:36 Running command echo Testing...
Testing...
 [Container] 2019/03/20 08:48:36 Running command docker-compose run -e RAILS_ENV=test \
-e RAILS_MASTER_KEY_TEST=$RAILS_MASTER_KEY_TEST \
app /bin/sh -c "rspec"
 Creating network "src_default" with the default driver
Creating src_db_1 ...
·[1A·[2K
Creating src_db_1 ... ·[32mdone·[0m
·[1BError response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./docker/app/docker-entry.sh\": permission denied": unknown

원인

S3로 소스코드를 압축해서 보내는 Codepipeline에서는 permission bits가 사라지는 문제가 있다고 한다. https://forums.aws.amazon.com/thread.jspa?threadID=235452

해결

Codebuild의 buildspec.yml 에서 다시 chmod +x ./docker/app/docker-entry.sh를 실행했다.