Всем привет! Делаю воркер на Симфони, вся работа идет через докер. Соответственно воркер запускается в отдельном контейнере. В качестве транспорта используется RabbitMQ. Сейчас есть проблема: чтобы воркер нормально работал, я захожу в консоль работающего контейнера и запускаю команду вручную:
php bin/console messenger:consume amqp_image_caching -vv
Все прекрасно работает. Сообщения доходят из основного контейнера через контейнер RabbitMQ в контейнер воркера. Но есть одно но - это решение так себе и нужно запускать эту команду автоматически сразу после запуска контейнера воркера. И тут я столкнулся с проблемой. Если дописать эту строку в конец Dockerfile:
CMD ["php bin/console messenger:consume amqp_image_caching -vv"]
То контейнер воркера все время будет в состоянии перезапуска (Restarting) и сам воркер работать не будет (я проверял, до него не доходят сообщения из очереди).
Полный Dockerfile для воркер-контейнера:
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
&& docker-php-ext-install intl opcache pdo pdo_mysql \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip
# AMQP
RUN docker-php-ext-install sockets
RUN apt-get install -y librabbitmq-dev \
&& pecl install amqp \
&& docker-php-ext-enable amqp
RUN apt-get install -y inetutils-ping
# GD
RUN apt-get update -y && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev \
libfreetype6-dev
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
--with-webp
RUN docker-php-ext-install gd
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony
WORKDIR /var/www/project
CMD ["php bin/console messenger:consume amqp_image_caching -vv"]
Воркер запускается вместе с другими контейнерами через docker-compose если что, они работают нормально. Проблема именно с запуском фоновой команды в отдельном контейнере воркера. Подскажите пожалуйста, как правильно ее запустить.