使用 PHP 8.2 和 RabbitMQ 的 AMQP 创建 Docker 容器时出错

问题描述 投票:0回答:1

我正在尝试使用 Docker、PHP 8.2 启动 Symfony 项目,并将 AMQP 包含到公式中,但我无法安装它,这是我的 Dockerfile:

FROM php:8.2.15-fpm

ARG UID
EXPOSE $UID

# Create user and some useful stuff
RUN adduser -u ${UID} --disabled-password --gecos "" appuser
RUN mkdir /home/appuser/.ssh
RUN chown -R appuser:appuser /home/appuser/
RUN echo "StrictHostKeyChecking no" >> /home/appuser/.ssh/config
RUN echo "export COLUMNS=300" >> /home/appuser/.bashrc
RUN echo "alias sf=/appdata/www/bin/console" >> /home/appuser/.bashrc

# Install packages and PHP extensions
RUN apt update \
    && apt install -y git acl openssl openssh-client wget zip vim libssh-dev \
    && apt install -y libpng-dev zlib1g-dev libzip-dev libxml2-dev libicu-dev \
    && docker-php-ext-install intl pdo pdo_mysql zip \
    && pecl install amqp xdebug \
    && docker-php-ext-enable --ini-name 05-opcache.ini opcache amqp xdebug

# Install and update Composer
RUN curl https://getcomposer.org/composer.phar -o /usr/bin/composer && chmod +x /usr/bin/composer
RUN composer self-update

# Install PHP-CS-FIXER
RUN wget https://cs.symfony.com/download/php-cs-fixer-v3.phar -O php-cs-fixer
RUN chmod a+x php-cs-fixer
RUN mv php-cs-fixer /usr/local/bin/php-cs-fixer

# Install Symfony Binary
USER appuser
RUN wget https://get.symfony.com/cli/installer -O - | bash
USER root

RUN mkdir -p /appdata/www

# Config XDEBUG
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /appdata/www

当尝试安装并激活 AMQP 时,问题发生在这一行:

&& pecl install amqp xdebug \
&& docker-php-ext-enable --ini-name 05-opcache.ini opcache amqp xdebug

根据日志,Dockerfile 下载 AMQP 2.1.2 版本(最后一个可用)。这是错误消息:

57.17 checking for amqp using pkg-config... configure: error: librabbitmq not found
57.19 ERROR: `/tmp/pear/temp/amqp/configure --with-php-config=/usr/local/bin/php-config --with-librabbitmq-dir' failed

我认为关键是“librabbitmq未找到”,因为在存储库中查找说明说有必要安装“librabbitmq”。

我一直在检查安装“librabbitmq”的说明,但我不太确定该怎么做,说明对我来说不清楚。我是否必须克隆存储库并按照说明进行操作?那么,我具体应该在哪里做呢?我在 Ubuntu 22.04 上使用 WSL。

最后,我不得不说,如果我删除“pecl install”和“docker-php-ext-enable”中的“amqp”一词,Dockerfile 就可以工作了。

另一方面,PHP 7 不会出现这个问题。

谢谢。

更新

我成功安装了“librabbitmq”,但仍然收到相同的错误“librabbitmq not found”。

docker dockerfile rabbitmq
1个回答
1
投票

您需要安装

librabbitmq-dev
软件包。这是修改后的
Dockerfile
。我删除了一些与当前问题无关的内容。一旦您确信 AMQP 已成功安装,您就可以合并这两个
RUN
命令。

FROM php:8.2.15-fpm

RUN apt update \
    && apt install -y git acl openssl openssh-client wget zip vim libssh-dev \
    && apt install -y libpng-dev zlib1g-dev libzip-dev libxml2-dev libicu-dev \
    && docker-php-ext-install intl pdo pdo_mysql zip
    
RUN apt install -y librabbitmq-dev \
    && pecl install amqp xdebug \
    && docker-php-ext-enable --ini-name 05-opcache.ini opcache amqp xdebug
© www.soinside.com 2019 - 2024. All rights reserved.