エラー内容
Gitlab-CIにて、unit-testステージのDockerImageで指定したENTRYPOINTのスクリプトで、一番最後の
# entrypoint.sh
(中略)
exec "$@"
execの部分で以下のエラーが出る。
error: exec: "sh -c if [ -x /usr/local/bin/bash ]; then\n\texec /usr/local/bin/bash \nelif [ -x /usr/bin/bash ]; then\n\texec /usr/bin/bash \nelif [ -x /bin/bash ]; then\n\texec /bin/bash \nelif [ -x /usr/local/bin/sh ]; then\n\texec /usr/local/bin/sh \nelif [ -x /usr/bin/sh ]; then\n\texec /usr/bin/sh \nelif [ -x /bin/sh ]; then\n\texec /bin/sh \nelif [ -x /busybox/sh ]; then\n\texec /busybox/sh \nelse\n\techo shell not found\n\texit 1\nfi\n\n": stat sh -c if [ -x /usr/local/bin/bash ]; then
gitlab-ci.yml
# .gitlab-ci.yml
(中略)
unit-test:
  image: gitlab.com:4567/my-docker-image:latest
  stage: unit-test
  script:
    - ./unittest.sh
  artifacts:
    paths:
      - ./_coverage
(中略)
my-docker-imageのDockerfile
# Dockerfile
(中略)
ENTRYPOINT ["/entrypoint.sh"]
CMD ["./manage.py", "runserver", "0.0.0.0:8000"]
解消
.gitlab-ci.yml の imageでentrypointを空でオーバーライドする。
# .gitlab-ci.yml
unit-test:
  image: 
    name: gitlab.com:4567/my-docker-image:latest
    entrypoint: [""]  # <-- 空を指定してオーバーライドする。
  stage: unit-test
  script:
    - ./unittest.sh
  artifacts:
    paths:
      - ./_coverage
(中略)
公式ドキュメントのここに書いてあった
https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#override-the-entrypoint-of-an-image
The runner expects that the image has no entrypoint or that the entrypoint is prepared to start a shell command.
RunnerはイメージにENTRYPOINTがないこと、またはシェルコマンドが開始できる準備ができていることを期待している(直訳)らしい。


 
                                       
                                       
                                      