Docker使用Memcache扩展安装PHP-7-fpm?失败,无法找到config.m4

时间:2016-04-07 04:54:19

标签: php git docker memcached

我正在尝试使用支持memcache的PHP版本7.0安装Docker,我的docker文件如下所示,但是它失败了@STEP 10但错误

Step 10 : RUN /usr/bin/phpize
 ---> Running in 450678a59cd4
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

[31mERROR[0m: Service 'php' failed to build: The command '/bin/sh -c /usr/bin/phpize' returned a non-zero code: 1 

Docker文件如下

FROM php:7.0-fpm
#FROM php:5.6-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd     

RUN docker-php-ext-install mysqli mbstring pdo_mysql 

# Download and Installing php libraries 
RUN apt-get -y install php-pear php5-dev 

# Download and Installing git and vim 
RUN apt-get -y install git vim gcc

# Download and Installing zip unzip 
RUN apt-get -y install zip unzip 

# install PHP PEAR extensions 
RUN apt-get -y install wget 

#RUN wget http://pecl.php.net/get/memcache-3.0.9-dev.tgz && gunzip memcache-3.0.9-dev.tgz && tar -xvf memcache-3.0.9-dev.tar && cd memcache-3.0.9-dev \
#   && phpize && ./configure && make && make install  

# RUN git clone https://github.com/websupport-sk/pecl-memcache && cd pecl-memcache 

RUN apt-get -y install libmemcached-dev libmemcached11
RUN git clone https://github.com/php-memcached-dev/php-memcached && cd php-memcached && git checkout -b php7 origin/php7
RUN /usr/bin/phpize 
RUN ./configure && make && make install

RUN apt-get install -y memcached    

EXPOSE 9000

COPY ./www.conf /etc/php-fpm.d/www.conf
COPY ./php.ini /etc/php.ini
COPY ./php-fpm.conf /etc/php-fpm.conf
COPY ./40-memcache.ini /etc/php.d/40-memcache.ini

#COPY bootstrap.sh /opt/bootstrap.sh
#RUN chmod +x /opt/bootstrap.sh
#ENTRYPOINT ["/opt/bootstrap.sh"]

3 个答案:

答案 0 :(得分:5)

以下是您的Dockerfiles的样子:

PHP-FPM Dockerfile:

FROM php:7.0-fpm

# ... 

RUN apt-get update && apt-get install -y \
    libpq-dev \
    libmemcached-dev \
    curl

# ... 

# Install Memcached for php 7
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
    && mkdir -p /usr/src/php/ext/memcached \
    && tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
    && docker-php-ext-configure memcached \
    && docker-php-ext-install memcached \
    && rm /tmp/memcached.tar.gz


# ... 

CMD ["php-fpm"]

EXPOSE 9000

Memcached Dockerfile:

FROM memcached:latest

CMD ["memcached"]

EXPOSE 11211

这取自https://github.com/LaraDock/laradock

答案 1 :(得分:1)

您需要在右侧文件夹中运行该命令/usr/bin/phpizeDockerfile as an example

RUN wget https://github.com/phpredis/phpredis/archive/2.2.5.zip; unzip 2.2.5.zip
WORKDIR /tmp/php-redis/phpredis-2.2.5
RUN /usr/bin/phpize; ./configure; make; make install

在您的情况下,您确实克隆了repo php-memcached并在其中创建了cd,但这不会更改下一个Dockerfile RUN指令的工作目录。

RUN指令之前设置该工作目录:

WORKDIR /php-memcached
RUN /usr/bin/phpize 

答案 2 :(得分:0)

这项工作对我来说:

FROM php:7.1.1-fpm
RUN apt-get update
RUN docker-php-ext-install mysqli
RUN apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng12-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN apt-get install git -y
RUN git --version
RUN apt-get install -y build-essential libmemcached-dev
RUN git clone https://github.com/php-memcached-dev/php-memcached.git
RUN cd php-memcached \
&& git checkout php7 \
&& phpize \
&& ./configure --disable-memcached-sasl \
&& make \
&& make install