Я использую Laravel Horizon для обработки заданий в моем приложении Laravel с помощью Supervisor. Вся установка выполняется на докере в ECS. На хост-узле ECS (управляемом Fargate) у меня работают агенты datadog, которые захватывают stdout / stderr контейнера и помещают его в datadog (так что я могу получить доступ к журналам централизованно).
Я заметил, что я не получаю журналы из обрабатываемых заданий. Даже простой print("test");
в коде задания не попадает в стандартный вывод.
Вот моя установка:
Dockerfile
FROM alpine:3.11
RUN apk add \
--no-cache \
--update \
...snipped...
py-pip \
&& pip install supervisor \
&& pip install supervisor-stdout
WORKDIR /app
...snipped...
Определение этого сервиса в yaml выглядит так:
version: '2'
services:
my-app-horizon:
container_name: my-app-horizon
image: ${DOCKER_IMAGE}
mem_limit: 1024M
command: "supervisord -c /etc/supervisor/conf.d/horizon.conf"
...snipped...
А вот содержание моего horizon.conf
:
[supervisord]
nodaemon=true
[program:horizon]
priority = 100
process_name=%(program_name)s
command=php /app/artisan horizon
autostart=true
autorestart=true
user=apache
stopwaitsecs=3600
stdout_events_enabled=true
stderr_events_enabled=true
[eventlistener:stdout]
priority = 1
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
Есть идеи, что мне может не хватать? Что я не могу получить логи из заданий, обработанных горизонт в докере через супервизор?