スマートな方法
「シンプルですが、なかなかよい方法では。(自賛)」、と書いた方法が、かなりダサいことが判明したので修正します…
起動用のシェルスクリプトを書いて、-g
オプションで "daemon off"
ディレクティブを指定します。
$PREFIX/sbin/nginx-runner
# !/bin/sh
if [ -f $PREFIX/logs/nginx.pid ]; then
rm -f $PREFIX/logs/nginx.pid
fi
$PREFIX/sbin/nginx -g "daemon off;"
これだと別に設定ファイルを用意しなくていいのでスマートですね……
最後のセミコロンをお忘れ無く!
古くてダサい方法…
小さな設定ファイルを作ります。
$PREFIX/conf/nginx-foreground.conf
daemon off;
include nginx.conf;
起動用のシェルスクリプトを書きます。
$PREFIX/sbin/nginx-runner
# !/bin/sh
if [ -f $PREFIX/logs/nginx.pid ]; then
$PREFIX/sbin/nginx -s quit
rm -f $PREFIX/logs/nginx.pid
fi
$PREFIX/sbin/nginx -c $PREFIX/conf/nginx-foreground.conf
Dockerfile
の CMD
でこれを使うと nginx-foreground.conf
を読むので、フォアグラウンドで動きます。
一方、手動で動かすときには、何も指定しなければ nginx.conf
を読むので、バックグラウンドで動作します。
シンプルですが、なかなかよい方法では。(自賛)