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中时,我使用了正确的语法,所以它传递没有错误。