尝试从官方 php:7.1-fpm-alpine
图像构建,在我的 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
构建它时,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 中使用的相同命令并在容器内以交互方式运行它,它会完美构建。没有错误。
这是一个错误,还是我遗漏了什么?
最佳答案
问题是一个非常简单的语法错误; set
命令之后的 apk
调用需要在 &&
之前,否则解释器将处理整个 apk
作为一组参数调用 set
。在这种情况下,不会添加包,因此 jpeglib.h
不存在。
当我在 shell 中输入命令时,我使用了正确的语法,所以它顺利通过了。
关于php - docker php :7. 1-fpm-alpine 无法构建 GD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42884227/