重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
运行./*.sh脚本文件时出现Permission denied错误的原因通常是权限不够,解决办法是chmod +x *.sh
创新互联公司自2013年起,公司以成都网站建设、网站制作、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户千余家,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。
项目使用阿里云镜像服务自动构建Docker镜像,本地开发环境构建时不能重现问题。
详细排查后发现Dockerfile中CMD调用launch.sh的写法是CMD ["./launch.sh"],问题就出在这里,修改为:CMD ["sh", "launch.sh"],问题解决。原因可能是开发环境使用的Win10没有正确设置.sh文件权限,也可能是镜像服务自动构建时没有正确保留.sh文件权限。
关键还是分享下./launch.sh和sh launch.sh的3个区别:
./*.sh | sh *.sh | |
可执行属性不同 | *.sh文件必须具有可执行属性 | 不必须具有可执行属性 |
执行方式不同 | 使用*.sh脚本文件中第一行指定的命令来解释和执行,通常是:#!/bin/bash | 使用shell工具sh解释和执行 |
兼容性不同 | 不受限于shell工具 | 受限于shell工具 |