2017-07-26 15 views
0

実行中ドッカーツールボックスWindows 10ホストDockerfile:RUNシェルスクリプトを実行しようとしたときのコード127

Dockerfileがあります:

FROM 16.04 
... 
RUN if [ some_condition ]; then ./foo.sh; fi 
... 

foo.shあり:ドッカーイメージを構築しようとしたときに

#!/bin/bash 
... 
echo 'Me working' 

:今すぐ

docker build -t name_of_the_image . 

エラーを取得する:

Step 7/12 : RUN ./foo.sh 
---> Running in e7e0703d3f8f 
/bin/sh: 1: ./foo.sh: not found 
The command '/bin/sh -c ./foo.sh' returned a non-zero code: 127 

私はエラーがドッカーbashを見ていないだろうと仮定します。任意の提案どのようにこれを修正するには?


編集:はすでにドッカーにすべてのファイルをコピーし、Dockerfile

FROM ubuntu:16.04 
MAINTAINER Mr Anderson "[email protected]" 

# set workdir 
COPY . /app 
WORKDIR /app 

# Run scripts 
RUN ./foo.sh 

答えて

0

:RUN上でCMDを使用して

  • があるため、これらのコマンドは、作業方法の完璧なソリューションではありません。 RUNは、Dockerイメージをレイヤーごとに構築するのに任意の時間使用できますが、CMDはイメージが構築されたときに一度しか実行できません。

私の場合では、溶液は、にした:VIMと

  • オープン./foo.shファイルを実行します::set fileformat=unixを、ファイルを保存します。

短いストーリー:シェルスクリプトの行末が間違っていて、UNIXのものに変換しなければならなかった。

1

あなたが実行する前に、RUN /コンテナにファイルをコピー/コピーする必要がありますスクリプト。

また、スクリプトを呼び出すときに相対パスを使用しているので、必ずWORKDIRを設定してください。

COPY ./foo.sh /app/foo.sh 
WORKDIR /dir 
RUN chmod +x /app/foo.sh 
RUN if [ some_condition ]; then ./foo.sh; fi 

また、スクリプトが実行可能であることを確認してください。いくつかのさらなる調査の後

+0

良い考え。残念ながら、これはそうではありません。既に 'COPY 'でドッカーにすべてのファイルをコピーしています。/app'。 – Oleg

+0

OK、 'CMD sh/app/foo.sh'を使いました。 – Oleg

+0

笑うまく、私はそのコメントを削除したので、あなたはそれがなくなる前にそれを見てうれしい...しかし、トリックをしたうれしい。そこに楽しみを持っている! – Kosch

関連する問題