2017-04-05 13 views
0

docker-composeの新機能で、サンプルスクリプトをコンテナ内で実行しようとしています。 以下は私のDockerfileです。私はドッキングウィンドウは、構成する実行したときに、コンテナ内で実行さdocker-composeが更新されたコードを選択しない

#Dockerfile 
FROM debian 
ADD . /scripts 
CMD ["bash", "/scripts/count.sh"] 

#docker-compose.yml 
version: '2' 
services: 
    count: 
    build: . 
    volumes: 
    - .:/scripts 

サンプルbashスクリプト

#!/bin/bash 
count=0 
#while [[ $count -le 30 ]]; 
while : 
do 
#((count++)) 
echo "hello world" 
done 

は、それがうまく実行され、私は、「Hello World」のようログを見ることができます。私は行のコメントを解除するスクリプトを変更した場合、私はコンテナにホスト上のボリュームをエクスポートしておりますので

while [[ $count -le 30 ]]; 

私はそれを選ぶdoes notの私は、任意のテキストに「こんにちは世界」に変更し、カウント30で場合、または停止コンテナを見ることができませんコード。 ローカル/ tmp/scriptsを/ scriptsにコンテナにマウントしました 何か不足していますか?

私はdocker-composeの例を使って作業しましたが、うまくいきました。私は更新されたコードを取得しました。 しかし私の例ではうまくいかない。 助けてください

答えて

0

あなたはプロセスを再起動する必要があります。 bashはファイルの変更を検出せず自動的にリロードします。

これは、次と同じです:

  1. 開き、コンピュータ上の端末、および/bin/bash /scripts/count.sh
  2. 開き、別の端末セッションを入力し、それを保存し、count.shを編集します。

最初のウィンドウで自動的に変更が反映されるとは思われません。コンテナ内で全く同じプロセスが行われています。最初のウィンドウにcount.shの変更を反映させるには、それを再起動する必要があります。

ボリュームをマウントすると、ファイルの変更がコンテナに表示されるだけで、それらのファイルを使用しているプロセスには影響しません。

docker-composeの例で動作する理由は、Flaskをサンプルアプリケーションとして使用しているからです。

フラスコスクリプトはローカルの開発サーバーを起動するためにいいですが、あなた:あなたがデバッグモードでフラスコを実行した場合、それが自動的にそれが(私の重点を置いて)flask documentationから、ファイルに変更を検出したときにリロードされます は、コードを変更するたびに手動で再起動する必要があります。その はあまりいいものではなく、フラスコがうまくいくかもしれません。 をデバッグサポートを有効にすると、サーバはコード変更で自動的にリロードされ、何か問題が発生した場合には でも役立つデバッガが提供されます。

自動リロードはフラスコの特徴であり、ドッカーの構成ではありません。

関連する問題