Службы супервизора не выводятся на консоль docker-compose

У меня есть докер-контейнер, внутри которого запускаются несколько сервисов. Я хочу, чтобы выходные данные каждой службы отправлялись на консоль. Это контейнер для разработки, поэтому я хочу видеть все результаты во время работы.

Я пробовал этот файл:

[supervisord]
nodaemon=true
 
[program:sshd]
command=/usr/sbin/sshd -D
autostart=true
autorestart=true
 
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
priority=900
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
username=www-data
autorestart=true
autostart=true

[program:php-fpm]
command=/usr/sbin/php-fpm7.4 -F
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
autostart=true
autorestart=true
priority=5


[program:memcached]
command=/usr/bin/memcached -u root
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
autostart=true
autorestart=true
priority=200

Но он выводит только сообщения супервизора, а не сообщения от служб. Я видел еще одну ветку, в которой сообщения журнала отправлялись на / dev / fd / 1 , поэтому я тоже попробовал и это не сработало.

stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

Мой базовый образ - ubuntu 20.04.

Почему я не могу получить сообщения журнала служб в консоли?

0
задан 24 February 2021 в 10:35
1 ответ

Во-первых, не используйте supervisord и docker, выберите один или другой, если вы используете docker, используйте docker compose и разделите каждую службу, используя docker для управления процессом, но если вы собираетесь это сделать в любом случае ... Я запустил supervisor с помощью supervisord -n и обновил свою конфигурацию nginx для отправки журналов на / dev / stderr и / dev / stdout, и все работает, как ожидалось. команды запуска для nginx отправляются супервизором в / dev / stdout, а журналы nginx отправляются в место, настроенное nginx, только error_log настраивается для параметров запуска nginx, см. конкретные ссылки ниже.

root@6534bf4b8d3c:/# supervisord -n
/usr/lib/python3/dist-packages/supervisor/options.py:470: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  self.warnings.warn(
2021-02-23 23:54:30,673 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2021-02-23 23:54:30,674 INFO Included extra file "/etc/supervisor/conf.d/guerrilla.conf" during parsing
2021-02-23 23:54:30,676 INFO RPC interface 'supervisor' initialized
2021-02-23 23:54:30,676 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2021-02-23 23:54:30,676 INFO supervisord started with pid 5239
2021-02-23 23:54:31,678 INFO spawned: 'nginx' with pid 5241
2021-02-23 23:54:32,686 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
127.0.0.1 - - [23/Feb/2021:23:54:35 -0500] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0"

sshd logging

nginx logging

php-fpm logging

memcached logging (подробный)

2
ответ дан 7 May 2021 в 19:49

Теги

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