dei*_*mou 6 php docker dockerfile alpine-linux
尝试从官方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
Run Code Online (Sandbox Code Playgroud)
尝试使用 构建它时docker build,GD 失败./configure并出现以下错误:
configure: error: jpeglib.h not found
Run Code Online (Sandbox Code Playgroud)
我可以确认它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
Run Code Online (Sandbox Code Playgroud)
但是如果我使用 dockerfile 中使用的完全相同的命令并在容器内以交互方式运行它,它就会完美地构建。没有错误。
这是一个错误,还是我错过了什么?
问题是一个极其简单的语法错误;命令apk后面的调用set需要以 开头&&,否则解释器会将整个apk调用视为 的一组参数set。在这种情况下,不会添加包,因此jpeglib.h不存在。
当我在 shell 中输入命令时,我使用了正确的语法,因此它没有错误地通过了。
| 归档时间: |
|
| 查看次数: |
5579 次 |
| 最近记录: |