2017-12-05 10 views
0

私は、エントリポイントとcmdの両方でドッカーをセットアップしようとします。ドッカーのエントリポイントとcmdを一緒に

FROM debian:stretch 
RUN apt-get update && \ 
apt install gnupg ca-certificates -y 
RUN echo "deb http://repo.aptly.info/ squeeze main" > /etc/apt/sources.list.d/aptly.list 
RUN apt-key adv --keyserver keys.gnupg.net --recv-keys 9E3E53F19C7DE460 
RUN apt update && apt install aptly -y 
ADD aptly.conf /etc/aptly.conf 
ADD start.sh . 
VOLUME ["/aptly"] 
ENTRYPOINT ["/start.sh"] 
CMD ["aptly", "api", "serve"] 

しかし、エントリポイントスクリプトが停止されていません... CMDコマンドはここ

を立ち上げていない私のスクリプト:

#!/bin/bash 
set -e 
init_aptly() { 
#import pgp key 
#create nginx root folder in /aptly 
su -c "mkdir -p /aptly/.aptly/public" 
echo "12" 
#initialize repository 
#aptly create repo doze-server - distribution="stable" 
    } 
    #check for first run 
if [ ! -e /aptly/.aptly/public ]; then 
    init_aptly 
    echo "13" 
fi 
    echo "14" 

スクリプトは常に14エコー、私は一つだけを希望し、 dockerfileからcmdコマンドを実行してください

答えて

0

entrypointとcommandの両方を使用すると、コマンドセクションは引数として実行可能なentrypointに追加されます。このように、あなたのケースで:

ENTRYPOINT ["/start.sh"] 
CMD ["aptly", "api", "serve"] 

が実行するのと同じです:

ENTRYPOINT["/start.sh", "aptly", "api", "serve"] 
+0

それでは、私はentrypointを持つ実行可能ファイルとしてcmdをどのようにすることができますか? – Vana

+0

あなたはbashスクリプト 'CMD ./start.sh && aptly api serve'のような実行可能ファイルを組み合わせることができます – yamenk

+0

私はそれを行い、それは仕事です!ありがとう:) – Vana

0

エントリポイントが何をしているか分からずには分かりませんが、基本的にこれはあなたがエントリポイントのとは一緒にCMD:

/start.sh aptly api serve 

あなたは単にあなたは、単に(neccessaryかもしれaptly実行可能ファイルへの有効なパス)は、このような何かを行うことができ、サーバーを起動した後であれば:あなたがない限り

ENTRYPOINT ["aptly"] 
CMD ["api", "serve"] 

実行可能ファイルを実行するだけではなく、エントリポイントスクリプトは必要ありません。

+0

不要cmdを、ちょうどENTRYPOINT [/start.sh適切APIはサーブ]? – Vana

+0

申し訳ありませんあなたの質問を理解できません。 –

関連する問題