试图build立一个docker容器,找不到start.sh

我试图build立一个docker集装箱,但似乎并没有find我的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中的meteor运行命令。 如何告诉meteor在特定的目录下执行,而不能进入?

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

我使用以下代码构build容器:docker build -t meteorapp。

错误,当我试图运行使用:

docker运行-p 80:80 –net docker-network –name meteorapp meteorapp

是:

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

非常感谢你!

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

 WORKDIR / ENTRYPOINT /start.sh 

由于这不起作用,您可以尝试以下两件事:

1.因为您正在使用Windows,请确保start.sh的EOL转换UNIX格式。

2.其次,更新你的入口点如下:

 ENTRYPOINT ./start.sh 

事实certificate,我的文件没有任何问题。 我在我的电脑上创build了一个新的目录,创build了新的文件,并复制了start.sh和Dockerfile的内容以及我的应用程序。 错误消失了。 这必须是一些严重的错误,我的朋友刚刚得到了与我的电脑上工作的其他文件相同的错误。

也许与Docker和Windows 10有一些问题。

编辑:无法修复我的朋友,我再次遇到同样的问题。 有人想法如何解决?

解决scheme:这是一个在windows下创build的start.sh和一个linux需求的不兼容。 要解决这个问题,在复制start.sh之后,将其添加到dockerfile中:

运行dos2unix /start.sh

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

运行apt-get install dos2unix