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

Failed to run a script using IntelliJ plugin for docker deployment

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

设置:
我的 Docker 文件应该 运行 一个设置脚本:

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

Docker 使用 IntelliJ 部署:
当 运行ning docker 部署(使用 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

Docker 使用 Circle 部署 CI:
我还在使用 circleci 以便在 AWS EC2(我的暂存和生产环境)上持续部署 docker 容器。
circleci 与相同的 docker 文件和 setup.sh 脚本一起使用时 运行 没问题。

有什么区别?

如果91m不属于/tmp/setup.sh的路径,那么可能是行尾编码问题。

在ASCII中,行尾(回车returnCR)可能打印为m^M,方括号[编码为91.

在 Windows 中,行尾由 CR+LF 字符表示,仅在 Unix 中 LF.

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

以下是 运行 使用 dos2unix 的方法:

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

    dos2unix setup.sh

以下是如何将它与 notepad++ 一起使用:

  • 在你的 Windows 机器上安装 notepad++
    • Open setup.sh with notepad++
    • Go to Edit > EOL Conversion > Unix/OSX Format
    • Save the file

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