从PHP 7.4开始,默认情况下禁用PEAR,这意味着PECL不再可用于安装扩展。这个决定有很多原因,所以我们必须做。我花了几个小时来更新Dockerfile并用手动安装替换PECL调用,这使MongoDB变得非常棘手。我写这篇文章是因为我想使用PHP 7.4, 但是安装扩展插件却遇到了麻烦。我希望这会有所帮助。
编辑:我想我找到了一个使用PECL包的简单解决方案。
初始Dockerfile,带有PECL
这是我的一项服务的基本映像的Dockerfile。这将是我们的出发点。我们在那里有很多扩展。有些与PHP捆绑在一起,例如sockets或opcache。对于一些需要手动安装喜欢的apcu,redis或mongodb。
FROM php:7.3.2-fpm-stretchRUN apt-get update && pecl channel-update pecl.php.net && pecl install apcu igbinary mongodb && # compile Redis with igbinary support pecl bundle redis && cd redis && phpize && ./configure --enable-redis-igbinary && make && make install && docker-php-ext-install bcmath sockets && docker-php-ext-enable apcu igbinary mongodb opcache redis && docker-php-source delete && rm -r /tmp/* /var/cache/* /var/www/html/*RUN echo 'opcache.interned_strings_buffer=16opcache.load_comments=Offopcache.max_accelerated_files=16000opcache.save_comments=Off' >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
Docker映像中可用的脚本
在开始之前,让我们快速了解Docker映像中可用的脚本。
首先,我们有docker-php-source,