GitLab CI是否处理Docker entrypoint&;有什么不同吗?

GitLab CI是否处理Docker entrypoint&;有什么不同吗?,docker,gitlab-ci,Docker,Gitlab Ci,在自定义Docker容器中运行GitLab CI作业时,我遇到了一些意外行为。它在GitLab之外按预期运行。我甚至不知道那是什么我不明白。。。也许我不知道GitLab是如何运行docker容器的,或者dockerENTRYPOINT和CMD是如何协同工作的,或者这只是我的shell脚本中的一个错误 我的自定义Docker映像用于运行CLI命令。它基于节点:12 slim,基本上只安装Puppeter和Percy。它将入口点设置为自定义shell脚本: ENTRYPOINT ["/us

在自定义Docker容器中运行GitLab CI作业时,我遇到了一些意外行为。它在GitLab之外按预期运行。我甚至不知道那是什么我不明白。。。也许我不知道GitLab是如何运行docker容器的,或者docker
ENTRYPOINT
CMD
是如何协同工作的,或者这只是我的shell脚本中的一个错误

我的自定义Docker映像用于运行CLI命令。它基于
节点:12 slim
,基本上只安装Puppeter和Percy。它将
入口点设置为自定义shell脚本:

ENTRYPOINT ["/usr/bin/local/percy-entrypoint.sh"]
但不覆盖基本图像
CMD

我的entrypoint脚本基本上只是检查几个环境变量(并去掉一些调试内容),然后运行一个“站点地图”功能:

echo "All args:"
echo "$@"

if [ "$1" = "sitemap" ] ; then
    percy exec -- node /sitemap.js
else
    exec "$@"
fi
我通过GitLab CI作业运行它,如下所示:

snapshot:
  stage: test
  image: my/percy-buildbox:latest
  script:
    - sitemap
  variables:
    PERCY_TOKEN: ${PERCY_TOKEN}
    SITEMAP_URL: percy-sitemap.xml
此作业生成的输出为:

All args:
sh -c if [ -x /usr/local/bin/bash ]; then
    exec /usr/local/bin/bash 
elif [ -x /usr/bin/bash ]; then
    exec /usr/bin/bash 
elif [ -x /bin/bash ]; then
    exec /bin/bash 
elif [ -x /usr/local/bin/sh ]; then
    exec /usr/local/bin/sh 
elif [ -x /usr/bin/sh ]; then
    exec /usr/bin/sh 
elif [ -x /bin/sh ]; then
    exec /bin/sh 
elif [ -x /busybox/sh ]; then
    exec /busybox/sh 
else
    echo shell not found
    exit 1
fi
$ sitemap
/bin/bash: line 134: sitemap: command not found
我甚至不。。。那些
如果
的东西是从哪里来的?它在干什么?我哪里做错了