Назад | Перейти на главную страницу

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

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

Я хочу запустить Postfix как PID 1 в докере. Я не хочу использовать оболочку bash, supervisorD или любую оболочку для его запуска.

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

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

Спасибо

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

Аналогично start, но демон master (8) должен работать на переднем плане

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

Начиная с 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"]

Постфикс нужен демон системного журнала для регистрации. Для краткого примера Dockerfile работает Postfix видеть jessfraz / dockerfiles / постфикс.

это бежит rsyslog в контейнере и запускает Postfix параллельно с подобным этот:

exec /usr/lib/postfix/master -c /etc/postfix -d 2>&1
tail -F /var/log/mail.log

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

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

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

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

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

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