web-dev-qa-db-ja.com

フォアグラウンドでpostfixを実行する方法はありますか?

フォアグラウンドでpostfixを実行する方法はありますか?

DockerでPID 1としてpostfixを実行したい。それを起動するためにbash Shell、supervisorD、またはラッパーを使用したくありません。フォアグラウンドで起動する方法があるかどうかを知りたいので、「docker logs 'container-name'」からログを確認できます

「postfix start」を手動で実行すると、実行されてバックグラウンドで開始されます。フォアグラウンドに保つ方法はありますか?

ありがとう

4
Farhan

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
3
webwurst

Postfixバージョン3.3以降では、postfix start-fg、それは ドキュメンテーションへ によると:

Startと同じですが、master(8)デーモンをフォアグラウンドで実行し続けます

それは物事をはるかに簡単にします!

13
Isaac Uribe

私があなたの質問を理解したなら、あなたは前置でpostfixを実行したいので、そのログをstdoutに送信し、Dockerログを使用してそれらを表示することができます。

ログがstdoutに送信されるような方法でPostfixを実行することはできません。公式ドキュメントの「Postfixデーモンプロセスはバックグラウンドで実行され、問題と通常のアクティビティをsyslogデーモンに記録します。」から、syslogdはPostfixがログを管理するために使用されますが、これは避けられない要件です。

Dockerはstdout/stderrに送信されないログ出力を「無視」するため、代替手段を探す必要があります。

この会話 は、Postkerとsyslogdの要件とDockerで可能な戦略に関する詳細情報を提供します。基本的には、syslog出力をホストのsyslogログファイルに送信しようとしますが、dockerログを使用してそれらを読み取ることはできません。

この古いコンテナ Docker Hubでは、少なくとも解決したい同じ問題を説明するために、Docker Hubで必要なことを実行しようとします。

最後に、syslogd情報をコンテナーから取得する際の問題を理解するために この記事は役に立ちました (ささいな議論で参照されています)を見つけました。

3
Miguel A. C.