我正在尝试创建一个基于Alpine Linux的Docker映像,它将运行PHP 7.1( apk add php7=7.1.9-r0 ),并安装了一些模块( memcached , mongodb , oauth , openssl和redis )。
我通过PECL这样安装模块:
RUN yes | pecl install \
igbinary \
redis-3.1.4 \
oauth-2.0.2 \
memcached-3.0.4 \
mongodb-1.3.3
然后将它们每个添加到php.ini 。
RUN for EXT in \
igbinary \
memcached \
mongodb \
oauth \
openssl \
redis; \
do \
echo "extension=${EXT}.so" >> /etc/php7/php.ini; \
done
大多数模块都可以正确安装,但是memcached和redis不想一起玩:
# php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php7/modules/memcached.so' - Error relocating /usr/lib/php7/modules/memcached.so: php_session_create_id: symbol not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php7/modules/redis.so' - Error relocating /usr/lib/php7/modules/redis.so: php_session_register_module: symbol not found in Unknown on line 0
PHP Warning: Module 'openssl' already loaded in Unknown on line 0
PHP Warning: Cannot load module 'mongodb' because required module 'json' is not loaded in Unknown on line 0
PHP 7.1.9 (cli) (built: Oct 2 2017 20:51:54) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
我也从源头尝试过:
RUN git clone https://github.com/php-memcached-dev/php-memcached
RUN cd php-memcached \
&& git checkout php7 \
&& git pull \
&& /usr/bin/phpize \
&& ./configure --with-php-config=/usr/bin/php-config \
&& make \
&& make install
但是,这给了我相同的结果。 我已经进行了一些搜索,显然在Alpine上可能存在glibc一些相关问题( 示例线程 ),但是我不确定这是同一个问题,因为错误输出会有些混乱。
关于在Alpine Linux上如何安装这些模块以与PHP 7.1配合使用,我有什么要注意的地方吗?