环境:
我使用IntelliJ 14将docker容器部署到我的本地计算机上的CoreOS(使用Vagrant和VirtualBox创建的VM)。
设置:
我的Dockerfile应该运行一个安装脚本:
ADD setup.sh /tmp/setup.sh
RUN chmod +x /tmp/setup.sh
RUN /tmp/setup.sh
使用IntelliJ进行Docker部署:
运行docker deploy(使用IntelliJ)时,它会构建一个映像,创建一个容器,但无法运行我的脚本并出现以下错误:
Step 5 : RUN /tmp/setup.sh
---> Running in cb36ed95ad50
[91m/bin/sh: 1: [0m
[91m/tmp/setup.sh: not found[0m
[91m
[0m
Error: The command '/bin/sh -c /tmp/setup.sh' returned a non-zero code: 127
Failed to deploy 'Deployment: Dockerfile: Dockerfile': The command '/bin/sh -c /tmp/setup.sh' returned a non-zero code: 127
使用Circle CI部署Docker :
我还使用circleci在AWS EC2(我的登台和生产环境)上持续部署docker容器。
将circleci与相同的docker文件和setup.sh脚本一起使用时,它运行正常。
有什么区别?
答案 0 :(得分:2)
如果91m
不属于/tmp/setup.sh
的路径,则可能是行结束编码问题。
在ASCII中,行尾(回车CR
)可以打印为m
或^M
,方括号[
编码为91
。< / p>
在Windows中,行尾由字符CR+LF
表示,在Unix中仅由LF
表示。
您可以尝试将setup.sh
文件格式从Windows转换为Unix。
有很多工具可以帮到你。在Unix上我通常使用dos2unix
。在Windows上,我通常使用notepad++
。
以下是如何使用dos2unix
:
dos2unix setup.sh
以下是notepad++
:
notepad++
- 使用
打开setup.sh
notepad++
- 转到修改&gt; EOL转换&gt; Unix / OSX格式
- 保存文件
再次使用新的setup.sh
运行您的docker部署,我希望它能解决您的问题。