2017-06-09 101 views
0

我有這個命令泊塢窗圖像:入口點找不到文件

FROM ruby:2.4-alpine 
WORKDIR /usr/src/app 

COPY Gemfile /usr/src/app/Gemfile 
COPY Gemfile.lock /usr/src/app/Gemfile.lock 

RUN bundle config build.nokogiri --use-system-libraries 
RUN bundle install --without development test 

VOLUME /state 

COPY . /usr/src/app/ 

ENTRYPOINT ["api-entrypoint.sh"] 
CMD ["foreman", "start"] 

它建立正確的,但是當我嘗試運行bash的,例如,我得到這個 container_linux.go:247: starting container process caused "exec: \"api-entrypoint.sh\": executable file not found in $PATH" docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"api-entrypoint.sh\": executable file not found in $PATH".

我試圖複製使用CMD可以獲得可執行權限...沒有任何工作

+0

我使用'ADD'並最終設置正確的權限我的入口腳本,即:'ADD entry.sh /entry.sh 運行chmod + X /entry.sh 入口點/ entry.sh' – Cyclonecode

回答

1

/usr/src/app可能不在您的路徑中,因此您應該包含腳本的完整路徑。您還需要確保您的entrypoint.sh是可執行文件,docker將完全按照它們在生成主機上的權限複製權限,因此根據您的方案可能不需要此步驟。

FROM ruby:2.4-alpine 
WORKDIR /usr/src/app 

COPY Gemfile /usr/src/app/Gemfile 
COPY Gemfile.lock /usr/src/app/Gemfile.lock 

RUN bundle config build.nokogiri --use-system-libraries 
RUN bundle install --without development test 

VOLUME /state 

COPY . /usr/src/app/ 
RUN chmod 755 api-entrypoint.sh 

ENTRYPOINT ["/usr/src/app/api-entrypoint.sh"] 
CMD ["foreman", "start"] 
+0

它的工作原理本地但由於某種原因,在Docker Cloud上部署時,我總是看到'ERROR:api-1:容器命令'/usr/src/app/api-entrypoint.sh'找不到或不存在.' –

+0

您是在部署相同的圖像(具有相同的圖像ID)? – BMitch

+1

哦,沒關係,我發現了這個問題:使用入口點時,高山圖像應該有'#!/ bin/sh'而不是'#!/ bin/bash'。愚蠢的錯誤 –

0

我有同樣的問題 - 未找到入口點,但我確信它是

看來您不能使用單引號'作爲入口點/命令。

所以我從

ENTRYPOINT ['/foo/bar/script.sh'] 
CMD ['run'] 

改爲

ENTRYPOINT ["/foo/bar/script.sh"] 
CMD ["run"] 

和它的作品。