docker image python 中的supervisord 无效查找

shu*_*van 2 supervisord

我面临着奇怪的行为,当具有主管图像的消费者在日志中工作时,我一直面临着相同的错误,这可能是什么以及如何解决它?

日志

2020-07-01 08:44:59,356 CRIT uncaptured python exception, closing channel <POutputDispatcher at 140437158404816 for <Subprocess at 140437159857600 with name messenger-consume_00 in state STARTING> (stderr)> (<type 'exceptions.IOError'>:[Errno 29] Invalid seek [/usr/lib/python2.7/site-packages/supervisor/supervisord.py|runforever|221] [/usr/lib/python2.7/site-packages/supervisor/dispatchers.py|handle_read_event|232] [/usr/lib/python2.7/site-packages/supervisor/dispatchers.py|record_output|166] [/usr/lib/python2.7/site-packages/supervisor/dispatchers.py|_log|142] [/usr/lib/python2.7/site-packages/supervisor/loggers.py|info|275] [/usr/lib/python2.7/site-packages/supervisor/loggers.py|log|293] [/usr/lib/python2.7/site-packages/supervisor/loggers.py|emit|186] [/usr/lib/python2.7/site-packages/supervisor/loggers.py|doRollover|211])

监管配置

[program:php-fpm]
command=php-fpm7 -F
numprocs=1
autostart=true
autorestart=true
startsecs=0
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

[program:cron]
command=/usr/sbin/crond -f -l 8
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
stdout_logfile_maxbytes=0
stderr_logfile_maxbytes=0
autorestart=true

[program:messenger-consume]
command=php /var/www/symfony/bin/console messenger:consume download_file --limit=1
numprocs=2
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d

[supervisord]
nodaemon=true

[unix_http_server]
file=/tmp/supervisor.sock
Run Code Online (Sandbox Code Playgroud)

docker compose 消费者配置

php-consume-csv-carriage:
    container_name: php-consume-csv-carriage
    build: php-consume-csv-carriage
    ports:
        - "9004:9001"
    environment: # You can use this section to set environment variables. But you can also use the .env file.
        - MESSENGER_TRANSPORT_DSN=${MESSENGER_TRANSPORT_DSN} # AMQP connection string-
    volumes:
        - ./symfony:/var/www/symfony:cached
        - ./logs/symfony:/var/www/symfony/var/log:cached
        - ./php-consume-csv-carriage/supervisord.conf:/etc/supervisord/conf.d/supervisord.conf
    links:
        - redis
    depends_on:
        - db
    networks:
        - php
Run Code Online (Sandbox Code Playgroud)

泊坞窗文件

FROM alpine:3.10

LABEL maintainer="Vincent Composieux <vincent.composieux@gmail.com>"

RUN apk add --update --no-cache \
    coreutils \
    php7-fpm \
    php7-apcu \
    php7-ctype \
    php7-curl \
    php7-dom \
    php7-gd \
    php7-iconv \
    php7-imagick \
    php7-json \
    php7-intl \
    php7-mcrypt \
    php7-fileinfo\
    php7-mbstring \
    php7-opcache \
    php7-openssl \
    php7-pdo \
    php7-pdo_mysql \
    php7-mysqli \
    php7-pdo_pgsql \
    php7-pgsql \
    php7-xml \
    php7-zlib \
    php7-phar \
    php7-tokenizer \
    php7-session \
    php7-simplexml \
    php7-xdebug \
    php7-zip \
    php7-xmlwriter \
    make \
    curl \
    zlib-dev \
    libxml2-dev \
    rabbitmq-c-dev \
    oniguruma-dev \
    php7-pecl-amqp \
    php7-amqp \
    php7-redis \
    openrc --no-cache \
    supervisor

COPY docker-entrypoint.sh /opt/docker-entrypoint.sh

RUN echo "$(curl -sS https://composer.github.io/installer.sig) -" > composer-setup.php.sig \
        && curl -sS https://getcomposer.org/installer | tee composer-setup.php | sha384sum -c composer-setup.php.sig \
        && php composer-setup.php && rm composer-setup.php* \
        && chmod +x composer.phar && mv composer.phar /usr/bin/composer && chmod +x /opt/docker-entrypoint.sh

COPY symfony.ini /etc/php7/conf.d/
COPY symfony.ini /etc/php7/cli/conf.d/
COPY xdebug.ini  /etc/php7/conf.d/

COPY symfony.pool.conf /etc/php7/php-fpm.d/

COPY ./cron /opt/cron
RUN crontab -u root /opt/cron

WORKDIR /var/www/symfony

ENTRYPOINT ["ash", "/opt/docker-entrypoint.sh"]

EXPOSE 9001
Run Code Online (Sandbox Code Playgroud)

shu*_*van 5

我像那个解决方案一样解决了它:

[program:messenger-consume]
command=php /var/www/symfony/bin/console messenger:consume andraction_parse_row --limit=200
numprocs=5
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
stdout_logfile_maxbytes = 0
stderr_logfile_maxbytes = 0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
Run Code Online (Sandbox Code Playgroud)

需要添加

stdout_logfile_maxbytes = 0
stderr_logfile_maxbytes = 0
Run Code Online (Sandbox Code Playgroud)