2016-09-15 9 views
-1

私はデーモンモードで動作しているときにのみ実行するdocker(squid)内で実行するプログラムを持っています。プログラムをデーモンとして実行しているDocker

私の質問は、shのエントリポイントが与えられているので、ドッカーが終了せずにプログラムをバックグラウンドで実行し続けるにはどうすればいいですか?ここで

だ私(簡体字)のエントリポイント:

#!/bin/bash 
set -e 

# default behaviour is to launch squid 
if [[ -z ${1} ]]; then 
     if [[ ! -d ${SQUID_CACHE_DIR}/00 ]]; then 
       echo "Initializing cache..." 
       $(which squid) -N -f /etc/squid4/squid.conf -z 
     fi 
     echo "Starting squid..." 
     exec $(which squid) -f /etc/squid4/squid.conf -YCd 1 
else 
     exec "[email protected]" 
fi 
+0

最後に追加 '' 'ping localhost 2>&1/dev/null''' –

+0

squidはコンテナ内の唯一の/プライマリプロセスであることを意図していますか?もしそうなら、前景モードでイカを実行してコンテナを取り外すだけではどうですか? – jwodder

+0

squidがフォアグラウンドで実行された場合、機能が失われる:複数の作業者 –

答えて

0

通常、あなたは次のようにあなたが「nohupは」コマンドを使用することになり、ログアウトした後、あなたが実行したままにしたいコマンドを実行すると:

nohup [COMMAND] & 

おそらく、コンテナの起動時にsquidが起動することを考慮する必要があります。これはDockerfileで定義できます。 Dockerfilesはイメージをどのように作成するのかを 'ドッカービルド'コマンドに伝えます。このようにして 'docker run'でコンテナを起動すると、アプリケーションはコンテナとのやりとりを必要とせずにすぐに起動します。

+0

私はそれを問題なく始めることができます。問題は、デーモン化されていない状態でしか起動できないため、いくつかの機能を失うことです。 –

関連する問題