我正在尝试使用 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”。
您需要安装
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