【问题标题】:Trying to build a docker container, start.sh not found尝试构建 docker 容器,找不到 start.sh
【发布时间】:2016-11-08 13:07:58
【问题描述】:

我正在尝试构建一个 docker 容器,但它似乎没有找到我的 start.sh。它将它复制到容器中,但不知何故不起作用。

这是我的 dockerfile:

FROM ubuntu:16.04

# Install Meteor
RUN apt-get update
RUN apt-get install -y curl
RUN curl https://install.meteor.com/ | sh
RUN meteor npm install --save highcharts

# Entypointscript
COPY start.sh /
RUN chmod u+x /start.sh

# Copy App
COPY /app /app

# UI Expose
EXPOSE 80

ENTRYPOINT /start.sh

这是我的 start.sh:

#!/bin/bash

sleep 20
/app/meteor run 

# don't exit 
/usr/bin/tail -f /dev/null

我也不确定 start.sh 中的那个流星运行命令。如何告诉流星运行在特定目录中执行,而不能 cd 进入它?

我使用的是 Windows 10。 我在 \app\ 目录中有我的流星应用程序,Dockerfile 和 start.sh 在与应用程序文件夹相同的目录中。

我使用以下命令构建容器: docker build -t meteorapp 。

我尝试运行时的错误:

docker run -p 80:80 --net docker-network --name meteorapp meteorapp

是:

/bin/sh: 1: /start.sh: 未找到

非常感谢!

【问题讨论】:

    标签: meteor docker build


    【解决方案1】:

    我也在 Windows 10 上运行,我的解决方法是将行尾从 CR LF (windows) 更改为 LF (Unix)。

    我使用 Notepad++ 完成了这项工作,使这变得非常简单,现在我可以构建图像了。在 Notepad++ 的“编辑”菜单中,您可以进行“EOL 转换”,这正是您所需要的。

    【讨论】:

    • 是的,伙计。非常感谢你。这也适用于我的情况。我有一个 nginx-alpine 图像,我想在其中运行一个启动脚本。使用此行结束修复它可以工作(y)
    【解决方案2】:

    事实证明我的文件没有任何问题。我在我的电脑上创建了一个新目录,创建了新文件并复制了 start.sh 和 Dockerfile 的内容以及我的应用程序。错误消失了。这一定是一个严重的错误,我的朋友在我的电脑上也可以使用其他文件时遇到了同样的错误。

    Docker 和 Windows 10 可能存在一些问题。

    编辑:无法为我的朋友修复它,我又遇到了同样的问题。有人知道如何解决吗?

    解决方案:这是在 windows 下创建的 start.sh 与 linux 需要的不兼容。要解决这个问题,请在复制 start.sh 后将其添加到 dockerfile:

    运行 dos2unix /start.sh

    如果没有安装dos2unix,必须先安装:

    运行 apt-get install dos2unix

    【讨论】:

    • 错误是找不到/bin/bash^M,因为linux和windows之间换行不兼容。所以“找不到文件”不是一个错误,但可能会让人感到困惑,你没有意识到它是哪个文件没有找到以及为什么。
    • 完美运行!我想运行 linux 项目的 windows 用户并不多 :)
    【解决方案3】:

    尝试将WORKDIR添加到添加start.sh的位置。像这样:

    WORKDIR /
    ENTRYPOINT /start.sh
    

    由于这不起作用,您可以尝试以下两种方法:

    1.由于您是在windows上工作,请确保start.sh的EOL转换为UNIX格式。

    2.其次,将您的入口点更新为以下内容:

    ENTRYPOINT ./start.sh
    

    【讨论】:

    • 我目前没有 docker 设置。会用你的 Dockerfile 进行测试。你仍然可以看到编辑,看看它是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2017-01-27
    • 2018-12-04
    • 2022-01-02
    • 2022-07-22
    • 1970-01-01
    • 2019-12-21
    相关资源
    最近更新 更多