docker php:7.1-fpm-alpine不能构buildGD

尝试从官方的php:7.1-fpm-alpine图像构build,在我的Dockerfile中使用以下摘录:

 FROM php:7.1-fpm-alpine RUN set -ex \ apk add --no-cache --virtual .build-deps \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \ \ && docker-php-ext-configure gd \ --with-freetype-dir=/usr \ --with-png-dir=/usr \ --with-jpeg-dir=/usr \ && docker-php-ext-install gd \ && apk del .build-deps 

当试图用docker build构build这个时,GD在./configure期间失败,出现以下错误:

 configure: error: jpeglib.h not found 

我可以确认jpeglib.h存在,并且正是我认为它应该在的地方 (事实上​​,确切地说它在Debian变体中的位置):

 $ docker run -it --rm php:7.1-fpm-alpine /bin/sh >$ apk add --no-cache libjpeg-turbo-dev \ && find /usr -type f -name 'jpeglib.h' ... /usr/include/jpeglib.h 

但是,如果我使用dockerfile中完全相同的命令并在容器内部交互式地运行它,它将完美地构build。 没有错误。

这是一个错误,还是我错过了什么?

问题是一个非常简单的语法错误; 在set命令之后的apk调用需要以&& ,否则解释器将整个apk调用视为一组参数来set 。 在这种情况下,包不会被添加,因此jpeglib.h不存在。

当我input命令到shell中时,我使用了正确的语法,所以它传递没有错误。