2016-11-15 19 views
0

ドッカーを使ってlocalhost:8000でjavascriptアプリケーションを実行しようとしています。私がしたいことの一部は、ドッカーの実行コマンドに基づいていくつかの設定ファイルを交換することです、私はbashスクリプトがパラメータとして使用できるように、コンテナに環境変数を渡したいと思います。私dockerfileは次のように探しているものNGINXドッカーのコンテナで起動する前にbashスクリプトを実行する

はこれです:

FROM nginx 
COPY . /usr/share/nginx/html 
CMD ["bash","/usr/share/nginx/html/runfile.sh"] 

そして、bashスクリプトは次のようになります。

#!/bin/bash 
if [ "$SECURITY_VERSION" = "OPENAM" ]; then 
    sed -i -e 's/localhost/openam/g' authConfig.js 
fi 

docker run -p 8000:80 missioncontrol:latest -e SECURITY_VERSION="TEST" 

ドッカーは私には見られない-e EXECコマンドを言って例外を提供します。

ただし、CMDの代わりにENTRYPOINTを使用するようにドッカーファイルを変更すると、-eフラグは機能しますが、Webサーバーは起動しません。

ここに何か不足していますか? ENTRYPOINTはオーバーライドされていますか?

EDIT:

だから私はENTRYPOINT ["bash","/usr/share/nginx/html/runfile.sh", ";", " nginx -g daemon off;"]

を使用するように私のdockerfileを更新しました。しかしドッキングウィンドウコンテナがまだシャットダウンします。私は行方不明のものがありますか?

+1

本当に '-e'が本当に欲しいとは思わないでしょう。 'RUN/usr/share/nginx/html/runfile.sh'のように、' CMD'ではなく 'RUN'が必要なのでしょうか? –

+0

しかし、ドッカーの実行コマンドから値を渡したいのですが、-eよりも良い方法がありますか? 私は考えられていた8000は、-p 'ドッカラン:80 missioncontrol: "/usr/share/nginx/html/runfile.sh OPENAM"' -c最新の/ binに/ bashが しかし、ウェブサーバが起動しませんでした – chiloutus

+0

私はsedコマンドについて話していました。 :P –

答えて

1

nginxコンテナはすでにENTRYPOINTを定義しています。 CMDも定義すると、CMDがENTRYPOINTの引数になるように 'ENTRYPOINT CMD'のように両方を組み合わせます。そのため、ENTRYPOINTを再定義して機能させる必要があります。

通常、ENTRYPOINTは、CMDに合格した場合、ENTRYPOINTスクリプトによって実行されるように定義されています。しかし、これはすべてのコンテナでは当てはまりません。

+0

はい、これは私の疑惑だった、おそらくnginxのドキュメントを見て、ENTRYPOINTを見つけることができるかどうかを確認する必要があるだろう – chiloutus

+0

だから私は更新した私のドッカーファイル使用する 'ENTRYPOINT [" bash "、"/usr/share/nginx/html/runfile.sh "、"; "、" nginx -gデーモンオフ; "] しかし、ドッカーコンテナはまだシャットダウンしますダウン。私は行方不明のものがありますか? – chiloutus

関連する問題