我正在尝试为我的应用程序创建我的 php docker 镜像,但是当我开始构建它时,由于显示此错误而无法安装一些扩展
#0 6.705 (25/26) Installing make (4.3-r0)
#0 6.726 (26/26) Installing re2c (2.1.1-r0)
#0 6.764 Executing busybox-1.34.1-r5.trigger
#0 6.770 OK: 255 MiB in 59 packages
#0 8.461 error: /usr/src/php/ext/libzip does not exist
#0 8.461
#0 8.461 usage: /usr/local/bin/docker-php-ext-install [-jN] [--ini-name file.ini] ext-name [ext-name ...]
#0 8.461 ie: /usr/local/bin/docker-php-ext-install gd mysqli
#0 8.461 /usr/local/bin/docker-php-ext-install pdo pdo_mysql
#0 8.461 /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop
#0 8.461
#0 8.461 if custom ./configure arguments are necessary, see docker-php-ext-configure
#0 8.461
#0 8.461 Possible values for ext-name:
#0 8.496 bcmath bz2 calendar ctype curl dba dom enchant exif ffi fileinfo filter ftp gd gettext gmp hash iconv imap intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlwriter xsl zend_test zip
#0 8.496
#0 8.496 Some of the above modules are already compiled into PHP; please check
#0 8.496 the output of "php -i" to see which modules are already loaded.
------
failed to solve: executor failed running [/bin/sh -c apk update && apk add --no-cache --update linux-headers ${PHPIZE_DEPS} && docker-php-ext-install exif mysqli pdo pdo_mysql libzip freetype libfreetype6-dev libjpeg62-turbo-dev libpng-dev && docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd && docker-php-ext-install opcache]: exit code: 1
扩展会抛出相同的错误:我也尝试过的
zip
,freetype
和libfreetype6-dev
。我该如何解决这些错误?在这些之前是否需要先安装另一个扩展?
参考这是我的 dockerfile
FROM php:8.1-fpm-alpine
# Install native PHP extensions
RUN apk update && apk add --no-cache --update linux-headers ${PHPIZE_DEPS} \
&& docker-php-ext-install \
exif \
mysqli \
pdo \
pdo_mysql \
libzip \
freetype\
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install opcache
请尝试以下可能对您有帮助的解决方案。也许“freetype”需要一个“GD”库。所以我们修改了下面的一点点 docker 文件。
我指的是这个链接:Trying to add freetype to php-gd in Docker official image
FROM php:8.1-fpm-alpine
# Install native PHP extensions
RUN apk update && apk add --no-cache --update linux-headers ${PHPIZE_DEPS} \
&& apk add --no-cache libzip-dev freetype-dev libjpeg-turbo-dev libpng-dev \
&& docker-php-ext-install \
exif \
mysqli \
pdo \
pdo_mysql \
libzip \
freetype \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install opcache
希望对您有所帮助。
您的解决方案有两个问题:
libzip-dev, freetype-dev, libjpeg-turbo-dev, libpng-dev
所以,最终构建成功的Dockerfile是:
FROM php:8.1-fpm-alpine
# Install native PHP extensions
RUN apk update \
&& apk add --no-cache --update linux-headers ${PHPIZE_DEPS} \
&& apk add libzip-dev \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& docker-php-ext-install \
exif \
mysqli \
pdo \
pdo_mysql \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install opcache