2016-11-08 86 views
2

我試圖建立一個碼頭集裝箱,但它似乎沒有找到我的start.sh。它將它複製到容器中,但它以某種方式不起作用。試圖建立一個碼頭集裝箱,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該流星運行命令。我如何告訴流星運行在特定的目錄下執行,而不能進入它?

我使用的是Windows 10. 我在\ app \目錄中有我的流星應用程序,並且在與app文件夾相同的目錄中有Dockerfile和start.sh。

我使用以下代碼構建容器:docker build -t meteorapp。

當我嘗試使用運行錯誤:

搬運工運行-p 80:80 --net泊塢窗網--name meteorapp meteorapp

是:

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

謝謝v很多!

回答

0

原來有沒有什麼毛病我的文件。我在我的電腦上創建了一個新目錄,創建了新文件並複製了start.sh和Dockerfile以及我的應用程序的內容。錯誤消失了。這必須是一些嚴重的錯誤,我的朋友剛剛得到了與我的電腦上工作的其他文件相同的錯誤。

也許有些問題與泊塢窗和Windows 10

編輯:無法修復它爲我的朋友,我再次遇到同樣的問題。有人想法如何解決?

解決方案:這是一個在windows下創建的start.sh與linux需要的不兼容。爲了解決這個問題,請在複製start.sh後將其添加到dockerfile中:

RUN dos2unix/start。SH

如果沒有安裝DOS2UNIX的,你必須先安裝它:

運行apt-get安裝DOS2UNIX的

+0

你檢查過文件結尾是否正確? – R0MANARMY

+1

錯誤在於找不到'/ bin/bash^M',因爲換行符在Linux和Windows之間不兼容。所以「文件未找到」不是一個錯誤,但可能會造成混淆,你不知道哪個文件沒有被找到,爲什麼。 – BMitch

0

嘗試增加WORKDIR到start.sh是added.Like這樣的位置:

WORKDIR/
ENTRYPOINT /start.sh 

因爲這沒有工作,你可以嘗試以下兩件事情:

1.Since你正在使用windows,請確保EOL Conversion for start.sh的格式爲UNIX

2.Secondly,更新您的入口點以下幾點:

ENTRYPOINT ./start.sh 
+0

感謝前面回答,但我得到了同樣的錯誤。 – tietze111

+0

我目前沒有docker設置。要使用Dockerfile進行測試。然後您可以看到編輯並查看是否有幫助。 – Rambler