docker容器启动报exec ./start.sh: no such file or directory异常
docker 无法正常启动,no such file or directory
·
1. 现象
dockerfile ENTRYPOINT指令下执行了一个脚本,用来启动容器中相关服务,打完包后docker run之后容器无法启动,报如以下异常
dockerfile如何所示
FROM ubuntu:20.04
ENV LANG C.UTF-8
#安装依赖
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y vim \
&& apt-get install -y wget \
&& apt-get install -y zip \
&& apt-get install -y openjdk-8-jdk \
#jar 包
COPY ./api.jar /opt/demoserver/
#启动脚本
COPY ./start.sh /opt/demoserver/
#工作目录
WORKDIR /opt/demoserver/
#设置权限
RUN chmod 755 start.sh
# 启动脚本
ENTRYPOINT ["./start.sh"]
我可以十分确认的是在workdir中,start.sh脚本已经存在了。通过注释ENTEYPOINT命令,使用
docker run --rm -it daffcbab668e89b657fb800ce bash
docker交互式运行容器,start.sh的确在/opt/meishesdk/demoserver/工作目录中。
2.修改办法
先说结论:start.sh带有默认Windows文本格式,使用dos2unix命令转换脚本,然后打包后,服务正常启动。
docker部署java服务已经轻车熟路了,遇到这种问题也是一头雾水…
找到之前的打包目录经过对比之前的start.sh脚本和此次有问题的脚本md5sum不一致,使用cat命令查看内容是一样的。使用file + start.sh命令查看
所以在windows中部署相关脚本一定要注意不能有window字符,可以使用cat -v命令或file命令检查一下
3.待解决
感觉docker这里应该报执行脚本错误才更新,为何无法找到start.sh?
由于工作繁忙,烦请知道的小伙伴告知一下
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)