フォアグラウンドでpostfixを実行する方法はありますか?
DockerでPID 1としてpostfixを実行したい。それを起動するためにbash Shell、supervisorD、またはラッパーを使用したくありません。フォアグラウンドで起動する方法があるかどうかを知りたいので、「docker logs 'container-name'」からログを確認できます
「postfix start」を手動で実行すると、実行されてバックグラウンドで開始されます。フォアグラウンドに保つ方法はありますか?
ありがとう
Postfix syslogデーモンが必要 ロギング用。 Dockerfile
の簡潔な例については running Postfix を参照してください jessfraz/dockerfiles/postfix 。
これは runs rsyslog
コンテナで実行され、それと並行してPostfixを開始します this :
exec /usr/lib/postfix/master -c /etc/postfix -d 2>&1
tail -F /var/log/mail.log
Postfixバージョン3.3以降では、postfix start-fg
、それは ドキュメンテーションへ によると:
Startと同じですが、master(8)デーモンをフォアグラウンドで実行し続けます
それは物事をはるかに簡単にします!
私があなたの質問を理解したなら、あなたは前置でpostfixを実行したいので、そのログをstdoutに送信し、Dockerログを使用してそれらを表示することができます。
ログがstdoutに送信されるような方法でPostfixを実行することはできません。公式ドキュメントの「Postfixデーモンプロセスはバックグラウンドで実行され、問題と通常のアクティビティをsyslogデーモンに記録します。」から、syslogdはPostfixがログを管理するために使用されますが、これは避けられない要件です。
Dockerはstdout/stderrに送信されないログ出力を「無視」するため、代替手段を探す必要があります。
この会話 は、Postkerとsyslogdの要件とDockerで可能な戦略に関する詳細情報を提供します。基本的には、syslog出力をホストのsyslogログファイルに送信しようとしますが、dockerログを使用してそれらを読み取ることはできません。
この古いコンテナ Docker Hubでは、少なくとも解決したい同じ問題を説明するために、Docker Hubで必要なことを実行しようとします。
最後に、syslogd情報をコンテナーから取得する際の問題を理解するために この記事は役に立ちました (ささいな議論で参照されています)を見つけました。