2017-05-12 51 views
0

dockerfileのエントリポイントとしてbashスクリプトを使用したいと思います。吹き出しコード:Dockerfileがエントリポイントスクリプトを見つけることができません

ENV INST INIT 
ADD start.sh /start.sh 
RUN chmod 777 /start.sh 
ENTRYPOINT /start.sh $INST 

正しいはずです。しかし、イメージを作成して実行すると、次のような結果が得られます。

/bin/sh: 1: /start.sh: not found 

誰でも助けてくれますか?ありがとう。 合計Dockerfile:

FROM debian:latest 

ENV INST INIT 
RUN apt-get update 
RUN apt-get install -y git build-essential gcc g++ vim 


RUN mkdir /Lab-C-Framework 
WORKDIR /Lab-C-Framework 
ADD Lab-C-Framework /Lab-C-Framework 
RUN make install 
RUN chmod 777 -R /Lab-C-Framework 

RUN mkdir /project 
ADD bin /project 
ADD src /project 
ADD header /project 
ADD tests /project 
ADD Docs /project 
ADD Makefile /project 
RUN chmod 777 -R /project 

ADD start.sh /start.sh 
RUN chmod 777 /start.sh 

RUN mkdir /code 
RUN chmod 777 /code 
VOLUME /code 
WORKDIR /code 


ENTRYPOINT /start.sh $INST 
+1

コンテナの/ binディレクトリにスクリプトを追加し、エントリポイントとして/を付けずにstart.shを使用します。 –

答えて

1

あなたが使用してエントリポイントを設定しようとすることができます:あなたはおそらく、環境からの$ INST変数権なしを読んcouls start.shスクリプトを編集することができた場合は

COPY start.sh /start.sh 
RUN chmod +x /start.sh 
ENTRYPOINT ["/start.sh", "$INST"] 

それをパラメータとして渡す必要があります。

1

/start.shスクリプトの最初の行は、存在しないものを指しているようです。 #!/bin/bashの場合は、イメージにbashをインストールする必要があります。また、シェルがコンテナにインストールされている場合は、最初の行に最後にウィンドウ改行がないことを確認してください。

関連する問題