Intentando construir a partir de la imagen oficial php:7.1-fpm-alpine , usando el siguiente extracto en mi 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 Al intentar compilar esto con docker build , GD falla durante ./configure con el siguiente error:
configure: error: jpeglib.h not found Puedo confirmar que jpeglib.h existe y está exactamente donde creo que debería estar (de hecho, exactamente donde está en las variantes de 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.hPero si tomo exactamente el mismo comando que se usa en el archivo acoplable y lo ejecuto de forma interactiva dentro del contenedor, se construye sin problemas. Sin errores.
¿Es esto un error o me estoy perdiendo algo?
El problema era un error de sintaxis deslumbrantemente simple; la llamada apk que sigue al comando set debe ir precedida de && ; de lo contrario, el intérprete tratará la llamada apk completa como un conjunto de argumentos para set . En ese caso, los paquetes no se agregan, por lo que jpeglib.h no existe.
Cuando escribí el comando en el shell, usé la sintaxis correcta, por lo que pasó sin errores.
Sí, deberías escribir así.
RUN set -ex \ && apk add --no-cache --virtual .build-deps \