2016-09-20 13 views
0

CMDステートメントでWORKERS変数を取得する方法をいくつか試しましたが、いずれも機能していないようです。アルパインベースのコンテナは、一般的に構文と使用法についても非常に厄介なようです。どんな助けもありがとう。アルパインベースの画像で、CMDでENV変数をどのように使用しますか?

Dockerfile

ENV WORKERS=2 

EXPOSE 5000 

CMD ["/usr/local/bin/gunicorn", "-b 0.0.0.0:5000", "-w ${WORKERS}", "app:app"] 

答えて

0

どうやらアルパインは、このパターンは、それが正常に動作することができます以下、サブシェルからアプリケーションを実行しません。

ENV WORKERS=2 
ENV WORKER_TIMEOUT=60 

EXPOSE 5000 

CMD ["/bin/sh", "-c", "/usr/local/bin/gunicorn \ 
    -b 0.0.0.0:5000 -w ${WORKERS} -t ${WORKER_TIMEOUT} app:app"] 
+2

これはデフォルトのドッカーの動作であり、アルパインに関連するものではありません。 – atamanroman

+0

私はコマンドの前に '/ bin/sh -c'を明示的に使用する必要はありませんでしたが、私は通常Debianベースのイメージを使っています。 – blakev

+1

@atamanromanが正しいです。 'CMD'や' ENTRYPOINT'の文字列形式を使用すると、ドッカーが自動的にそれを行うので、シェルを追加する必要はありません。あなたがjson配列形式を使用しているので、あなたは 'sh'を自分自身に追加しなければなりません。これはアルパインとは関係ありません。 – dnephin

関連する問題