我正在尝试安装php yaml扩展名。
我的Dockerfile:
FROM php:fpm-alpine
# gd
RUN apk add --update --no-cache \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" gd
# imagick
RUN apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& apk del autoconf g++ libtool make pcre-dev
# Yaml
RUN apk add --no-cache \
yaml-dev
RUN pecl install yaml
# I've trying with yaml-2.0.4 too...
RUN docker-php-ext-enable yaml
# Copy php conf files
COPY php-fpm.conf /usr/local/etc/php-fpm.d/www-user.conf
COPY php.ini /usr/local/etc/php/conf.d/50-setting.ini
错误:
ERROR: Service 'php' failed to build: The command '/bin/sh -c pecl install yaml' returned a non-zero code: 1
为什么在2019年安装基本的PHP扩展程序如此复杂? 没有文档解释这一点很正常吗?
编辑:否,它与“ add yaml extension to php on using official Alpine Docker image”不同。我知道如何搜索,并且在发布问题之前就找到了这个答案,但是该解决方案对我不起作用(而且答案已经过时了……)。
编辑2:我发现了。因此,就像David Maze所说的那样,我必须使用yaml安装依赖项(当然不可能自动安装它们,2019年,大家好!)。所以现在我与yaml同时安装imagick了:
FROM php:fpm-alpine
# gd
RUN apk add --update --no-cache \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" gd
# imagick & yaml
RUN apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev yaml-dev \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& pecl install yaml \
&& docker-php-ext-enable yaml \
&& apk del autoconf g++ libtool make pcre-dev
# Copy php conf files
COPY php-fpm.conf /usr/local/etc/php-fpm.d/www-user.conf
COPY php.ini /usr/local/etc/php/conf.d/50-setting.ini