PHP 带有 php-memcached 的 Dockerfile 不工作

PHP Dockerfile with php-memcached not working

我无法使用 PHP-Memcached 扩展构建任何图像。他们都给我一条错误消息,我尝试了多少次都没有帮助。我什至找不到任何 PHP 包含 memcached 的 Dockerfile,它可以工作。即使 PHP docker 页面的主要 page 页面也有带有 PHP Memcached 解决方案的 Dockerfile,但它也无法正常工作。

FROM php:5.6-cli

RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev \

&& pecl install memcached-2.2.0 \

&& docker-php-ext-enable memcached

这是我最后一次尝试的代码

FROM php:7.4-fpm

ADD php.ini /usr/local/etc/php/conf.d/php.ini

RUN docker-php-ext-install pdo pdo_mysql

# for mysqli if you want
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

RUN apt-get update
RUN apt-get install -y libz-dev libmemcached-dev && \
    pecl install memcached && \
    docker-php-ext-enable memcached

谁知道这件事?谢谢指教

看来我终于找到了解决问题的方法,它与 /etc/apt/source.list

有关
deb http://ftp.us.debian.org/debian buster main
deb http://ftp.us.debian.org/debian buster-updates main

然后只需在您的 Dockerfile 中添加此 COPY ./sources.list /etc/apt/sourcee.list 行即可

FROM php:7.2-fpm

COPY ./sources.list /etc/apt/sourcee.list

我已经将 memcached 和 phm-memcached 分开了。第一个是容器,第二个安装在 PHP 的 Dockerfile 上。 我的 docker-撰写文件:

version: '3'
services:
    # PHP
    php:
        build:
            context: docker/php7-fpm
        volumes:
        // etc...

    memcached:
        image: memcached:latest
        hostname: memcached
        networks:
            - stack

在我的 PHP 的 Dockerfile 中:

FROM php:7-4-fpm

// install dependencies...

# php-memcached
RUN set -ex \
    && rm -rf /var/lib/apt/lists/* \
    && MEMCACHED="`mktemp -d`" \
    && curl -skL https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz | tar zxf - --strip-components 1 -C $MEMCACHED \
    && docker-php-ext-configure $MEMCACHED \
    && docker-php-ext-install $MEMCACHED \
    && rm -rf $MEMCACHED

有了这个,在我的 symfony 应用程序中,我可以将数据存储在 memcached 中。