无法使用IntelliJ插件为docker部署运行脚本

时间:2016-01-26 16:31:31

标签: intellij-idea docker intellij-14 coreos

环境
我使用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脚本一起使用时,它运行正常。

有什么区别?

1 个答案:

答案 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的CoreOS机器安装包上,运行以下命令:
      

    dos2unix setup.sh

以下是notepad++

的使用方法
  • 在Windows计算机上安装notepad++
      
        
    • 使用setup.sh
    • 打开notepad++   
    • 转到修改&gt; EOL转换&gt; Unix / OSX格式
    •   
    • 保存文件
    •   

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