如何在docker';s官方php fpm阿尔卑斯山图片?

如何在docker';s官方php fpm阿尔卑斯山图片?,php,docker,alpine,Php,Docker,Alpine,我正在使用wordpress:php7.1-fpm-alpine,它基于php:7.1-fpm-alpine() 我已经尝试运行pecl安装xdebug-2.5.0和docker php ext enable xdebug 这会在生成时导致错误: Step 19/19 : RUN pecl install xdebug-2.5.0 && docker-php-ext-enable xdebug ---> Running in 52c988e12cb2 downlo

我正在使用
wordpress:php7.1-fpm-alpine
,它基于
php:7.1-fpm-alpine
()

我已经尝试运行pecl安装xdebug-2.5.0和docker php ext enable xdebug

这会在生成时导致错误:

Step 19/19 : RUN pecl install xdebug-2.5.0     && docker-php-ext-enable xdebug
 ---> Running in 52c988e12cb2
downloading xdebug-2.5.0.tgz ...
Starting to download xdebug-2.5.0.tgz (267,640 bytes)
........................................................done: 267,640 bytes
76 source files, building
running: phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

以下内容足以在该映像上简单安装xdebug:

FROM wordpress:php7.1-fpm-alpine

RUN apk add --no-cache $PHPIZE_DEPS \
    && pecl install xdebug-2.5.0 \
    && docker-php-ext-enable xdebug
构建该图像,然后从结果图像中的壳运行,将产生以下结果:

$ php -i | grep Xdebug
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

如果您关心图像大小,可以删除依赖项:

FROM wordpress:php7.1-fpm-alpine 
RUN apk --update --no-cache add autoconf g++ make && \
    pecl install -f xdebug && \
    docker-php-ext-enable xdebug && \
    apk del --purge autoconf g++ make

回答得很好@msanschez_aplyca。尽管通过
apk
更正确地删除构建依赖性是:

RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
    && pecl install xdebug-2.5.0 \
    && docker-php-ext-enable xdebug \
    && apk del -f .build-deps
对于PHP>=7.2,需要使用Xdebug 2.6.0+ 例如,安装Xdebug 3.0.0(于2020年11月25日发布)

与PHP8.0兼容

现在您可以通过添加以下内容进行设置(使用Xdebug 3.0.0语法:):

# Configure Xdebug
RUN echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.log=/var/www/html/xdebug/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.discover_client_host=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini

这个解决方案有效吗?我真的不认为这是一个完整的解决方案。我需要确定所有依赖项。如果使用非基于Alpine的基本映像,请使用apt而不是apk,例如
运行apt-qy install$PHPIZE_DEPS&&pecl install xdebug-2.5.0&&docker php ext enable xdebug
,在我的情况下,它可以与CLI完美地运行,但不会与FPM一起运行。因此,
php-i
并没有给出全部情况。如果有人有建议的话,我仍在试图弄清楚。我讨厌docker hub页面中从来没有提到
phpize
$phpize_DEPS
。对于使用php:7.3-fpm-alpine及以上的用户,记得从xdebug包中删除“-2.5.0”。因此,与其加入
install xdebug-2.5.0
,不如加入
install xdebug
,而不是删除2.5.0,我建议将其更新为3.0.4(),这样您仍然可以知道所获得的版本,并且在需要/想要更新时有一个明确的位置来创建一个自然缓存半身像。答案很好。
# Configure Xdebug
RUN echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.log=/var/www/html/xdebug/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.discover_client_host=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini