无法运行使用IntelliJ插件的docker卸载脚本

环境
我正在使用IntelliJ 14将Docker容器部署到本地计算机上的CoreOS(使用Vagrant和VirtualBox创build的虚拟机)中。

设置
我的Dockerfile应该运行一个安装脚本:

ADD setup.sh /tmp/setup.sh RUN chmod +x /tmp/setup.sh RUN /tmp/setup.sh 

Docker部署使用IntelliJ
运行Docker部署(使用IntelliJ)时,它生成一个图像,创build一个容器,但没有运行我的脚本,出现以下错误:

 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 

Docker部署使用Circle CI
我还使用circleci来连续部署Docker容器在AWS EC2上(我的分段和生产环境)。
当使用相同的docker文件和setup.sh脚本circleci运行正常。

任何想法有什么不同?

谢谢,
艾菲

如果91m不属于/tmp/setup.sh的path,则可能是行结束编码问题。

在ASCII中,行末(回车符CR )可以打印为m^M和方括号[编码为91

在Windows中,行尾由字符CR+LF表示,而在Unix中只有LF

您可以尝试将setup.sh文件格式从Windows转换为Unix。 有很多工具可以为你做。 在Unix上我通常使用dos2unix 。 在Windows上,我通常使用notepad++

以下是如何使用dos2unix运行它:

  • 在名为dos2unix的CoreOS机器安装软件包上运行以下命令:

    dos2unix setup.sh

这里是如何使用notepad++

  • 在你的Windows机器上安装notepad++
    • notepad++打开setup.sh
    • 转到编辑> EOL转换> Unix / OSX格式
    • 保存文件

再次用新的setup.sh运行你的docker部署,我希望它能解决你的问题。