GitLab CI是否处理Docker entrypoint&;有什么不同吗?
在自定义Docker容器中运行GitLab CI作业时,我遇到了一些意外行为。它在GitLab之外按预期运行。我甚至不知道那是什么我不明白。。。也许我不知道GitLab是如何运行docker容器的,或者dockerGitLab 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
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
我甚至不。。。那些如果的东西是从哪里来的?它在干什么?我哪里做错了