在 Wordpress PHP Docker 容器中使用 igbinary 的 Redis
Redis with igbinary in Wordpress PHP Docker container
我想让我的 wordpress 实例使用 igbinary 序列化程序通过 Redis 访问数据库内容。我正在使用 Till Krüss 的 Worpdress 的 Redis 缓存插件。
根据我的理解,容器应该采用以下方式:
- redis:alpine(https://hub.docker.com/_/redis) 这里不用修改吧?
- wordpress:php7.4-fpm-alpine (https://hub.docker.com/_/wordpress/) Redis 对 igbinary 的支持应该包含在这里吧?
如何在 wordpress iamge 中正确包含具有 igbinary 支持的 Redis?我尝试了以下方法:
FROM wordpress:php7.4-fpm-alpine
RUN set -xe \
&& apk update \
&& apk upgrade \
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
&& pecl install -o -f igbinary \
&& cd /usr/src/ \
&& pecl bundle redis \
&& docker-php-ext-configure /usr/src/redis --enable-redis-igbinary \
&& docker-php-ext-install -j$(nproc) /usr/src/redis \
&& docker-php-ext-enable redis \
&& docker-php-ext-enable igbinary \
&& apk del .phpize-deps
我读到,pecl 已经过时,不应再使用(而是使用 pickle 或 composer,但它们似乎不提供正确的包)
所以问题是:Dockerfile 必须是什么样子才能允许使用现代标准将 redis 与 igbinary 序列化程序一起使用?
希望大家能帮帮我:)
使用以下内容:
FROM wordpress:php7.4-fpm-alpine
RUN set -xe \
&& apk update \
&& apk upgrade \
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
# && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& wget https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar \
&& chmod +x pickle.phar \
&& mv pickle.phar /usr/local/bin/pickle \
&& pickle install -n igbinary \
&& docker-php-ext-enable igbinary \
&& echo "--enable-redis-igbinary" > cfg-options.txt \
&& pickle install --with-configure-options cfg-options.txt redis \
&& docker-php-ext-enable redis \
&& apk del .phpize-deps \
&& rm -rf cfg-options.txt \
&& php -m | grep igbinary \
&& php -m | grep redis \
&& php -i | grep igbinary \
&& php -i | grep redis \
#&& CLI_VERSION=$(wp cli info | grep "WP-CLI version" | cut -d$'\t' -f2) \
#&& if [ "${CLI_VERSION}" = "2.4.0" ]; then wp cli update --nightly --yes; fi
它在使用 pickel 并遵守在 redis 扩展之前启用 igbinary 扩展的顺序时有效。
我想让我的 wordpress 实例使用 igbinary 序列化程序通过 Redis 访问数据库内容。我正在使用 Till Krüss 的 Worpdress 的 Redis 缓存插件。 根据我的理解,容器应该采用以下方式:
- redis:alpine(https://hub.docker.com/_/redis) 这里不用修改吧?
- wordpress:php7.4-fpm-alpine (https://hub.docker.com/_/wordpress/) Redis 对 igbinary 的支持应该包含在这里吧?
如何在 wordpress iamge 中正确包含具有 igbinary 支持的 Redis?我尝试了以下方法:
FROM wordpress:php7.4-fpm-alpine
RUN set -xe \
&& apk update \
&& apk upgrade \
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
&& pecl install -o -f igbinary \
&& cd /usr/src/ \
&& pecl bundle redis \
&& docker-php-ext-configure /usr/src/redis --enable-redis-igbinary \
&& docker-php-ext-install -j$(nproc) /usr/src/redis \
&& docker-php-ext-enable redis \
&& docker-php-ext-enable igbinary \
&& apk del .phpize-deps
我读到,pecl 已经过时,不应再使用(而是使用 pickle 或 composer,但它们似乎不提供正确的包)
所以问题是:Dockerfile 必须是什么样子才能允许使用现代标准将 redis 与 igbinary 序列化程序一起使用?
希望大家能帮帮我:)
使用以下内容:
FROM wordpress:php7.4-fpm-alpine
RUN set -xe \
&& apk update \
&& apk upgrade \
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
# && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& wget https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar \
&& chmod +x pickle.phar \
&& mv pickle.phar /usr/local/bin/pickle \
&& pickle install -n igbinary \
&& docker-php-ext-enable igbinary \
&& echo "--enable-redis-igbinary" > cfg-options.txt \
&& pickle install --with-configure-options cfg-options.txt redis \
&& docker-php-ext-enable redis \
&& apk del .phpize-deps \
&& rm -rf cfg-options.txt \
&& php -m | grep igbinary \
&& php -m | grep redis \
&& php -i | grep igbinary \
&& php -i | grep redis \
#&& CLI_VERSION=$(wp cli info | grep "WP-CLI version" | cut -d$'\t' -f2) \
#&& if [ "${CLI_VERSION}" = "2.4.0" ]; then wp cli update --nightly --yes; fi
它在使用 pickel 并遵守在 redis 扩展之前启用 igbinary 扩展的顺序时有效。