Docker运行镜像报错docker-entrypoint.sh未在$PATH找到的问题求助
修复方案
授予脚本可执行权限
COPY指令默认不会保留宿主文件的执行权限,也不会主动为复制后的文件添加执行权限,在Dockerfile中新增权限修改指令即可:
COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"]若使用BuildKit构建,也可以直接在COPY时指定权限:
COPY --chmod=755 docker-entrypoint.sh /usr/local/bin/修正脚本换行符格式
若在Windows环境下编写
docker-entrypoint.sh,文件默认换行符为CRLF,Linux容器无法识别该格式会触发找不到可执行文件的报错,可通过以下方式修复:- 用本地编辑器将脚本的换行符改为LF格式后重新构建镜像
- 或在Dockerfile中新增换行符转换逻辑:
COPY docker-entrypoint.sh /usr/local/bin/ RUN dos2unix /usr/local/bin/docker-entrypoint.sh && chmod +x /usr/local/bin/docker-entrypoint.sh改用绝对路径指定入口
避免容器PATH环境变量异常导致找不到文件,直接将ENTRYPOINT修改为绝对路径写法:
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]检查基础镜像的shell支持
你的脚本首行指定了
#!/bin/sh解释器,若使用的是极度精简的基础镜像(如scratch、裸alpine镜像),可能未内置sh解释器,需要提前安装shell组件或更换带shell环境的基础镜像。
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

