Есть ли способ запустить postfix на переднем плане?

Есть ли способ запустить postfix на переднем плане?

Я хочу запустить postfix как PID 1 в докере. и я не хочу использовать какую-либо оболочку bash, supervisorD или любую оболочку для ее запуска. Я просто хочу знать, есть ли способ запустить его на переднем плане, чтобы я мог проверить его журналы из «docker logs 'container-name'»

Когда я вручную запускаю «postfix start», он запускается и затем запускается в фоновом режиме. есть ли способ сохранить его на переднем плане?

Спасибо

4
задан 29 November 2017 в 21:25
4 ответа

Postfix нуждается в демоне syslog для ведения журнала. Краткий пример Dockerfile , запускающего Postfix , см. В jessfraz / dockerfiles / postfix .

Этот запускает rsyslog в контейнере и запускает Postfix параллельно с this :

exec /usr/lib/postfix/master -c /etc/postfix -d 2>&1
tail -F /var/log/mail.log
3
ответ дан 3 December 2019 в 02:22

Если я понял ваш вопрос, вы хотите запустить postfix в foregroud, чтобы он получал свои журналы, отправленные на стандартный вывод, и вы могли отображать их, используя журналы докеров.

Вы не можете запускать Postfix в способ отправки журналов на стандартный вывод. Из официальных документов: «Процессы демона Postfix работают в фоновом режиме и регистрируют проблемы и нормальную активность для демона syslog.», Поэтому syslogd используется Postfix для управления своими журналами, и это требование, которого вы не можете избежать.

Как Docker будет «игнорировать» вывод журнала, который не отправляется на stdout / stderr, вам следует искать альтернативы.

Этот диалог дает вам больше информации о требованиях postfix и syslogd и возможных стратегиях в Docker. Обычно он пытается отправить вывод системного журнала в файлы журнала системного журнала вашего хоста, но вы не сможете использовать журналы докеров для их чтения.

Этот старый контейнер в Docker Hub пытается делать то, что вы хотите, по крайней мере, объясняет ту же проблему, которую вы хотите решить.

Наконец, я нашел эту статью полезной (упоминаемой в обсуждении nabble), чтобы понять проблему получения информации syslogd из контейнера.

3
ответ дан 3 December 2019 в 02:22

Начиная с Postfix версии 3.3, вы также можете использовать postfix start-fg , что согласно документации :

Как start, но оставьте демон master (8) работающим на переднем плане

Это значительно упрощает работу!

10
ответ дан 3 December 2019 в 02:22

Начиная с Postfix 3.3, docker изначально поддерживается. Просто соберите и запустите этот Dockerfile:

FROM alpine:3

RUN apk add --no-cache postfix postfix-pcre
RUN echo "maillog_file = /dev/stdout" >> /etc/postfix/main.cf

CMD ["/usr/sbin/postfix","start-fg"]
8
ответ дан 16 June 2020 в 09:51

Теги

Похожие вопросы