Docker 使用 PHP zip 扩展名构建的图像显示 "bundled libzip is deprecated" 警告
Docker image build with PHP zip extension shows "bundled libzip is deprecated" warning
我有一个 Dockerfile
,其构建命令如下:
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
我从构建输出中收到此警告:
WARNING: Use of bundled libzip is deprecated and will be removed.
configure: WARNING: Some features such as encryption and bzip2 are not available.
configure: WARNING: Use system library and --with-libzip is
recommended.
在没有这些警告的情况下安装 zip 扩展的正确方法是什么?
我完整的 Dockerfile 如下所示:
FROM php:7.2-apache
RUN apt-get clean
RUN apt-get update
#install some basic tools
RUN apt-get install -y \
git \
tree \
vim \
wget \
subversion
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
#setup composer
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
&& ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
WORKDIR /var/www/
它looks like PHP no longer bundles libzip. You need to install it。您安装 zlib1g-dev
,但安装 libzip-dev
。这会将 zlib1g-dev
作为依赖项进行安装,并允许 configure
脚本检测到 libzip
已安装。
对于 PHP < 7.3,您需要
docker-php-ext-configure zip --with-libzip
在使用
执行安装之前
docker-php-ext-install zip
如上次警告所示。
简而言之:将 Docker 文件的相关部分更改为
对于 PHP < 7.3
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-configure zip --with-libzip \
&& docker-php-ext-install zip
对于PHP>=7.3
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip
我已验证此构建符合预期。
如果您不使用 Docker PHP base image,事情可能会容易得多。例如,对于 Alpine,以下 Docker 文件将为您提供安装了 zip 扩展名的 PHP 7。
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add php7 php7-zip composer
我使用 php:7.2-fpm-alpine
在 Docker 上构建了一个 PHP 容器
FROM php:7.2-fpm-alpine
WORKDIR /var/www
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip --with-libzip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
为了构建 php/apache 容器,您只需首先安装 libzip-dev 库。至少使用 docker 图像 php:7.3-apache
FROM php:7.3-apache
MAINTAINER XXX
RUN apt-get update
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip
希望对您有所帮助
如果您使用的是 7.4,这对我有用:
FROM php:7.4-fpm-alpine
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
这对我有用:
RUN docker-php-ext-configure zip --with-libzip
显然 zip 扩展在运行时(不仅仅是构建时)需要 libzip-dev
包。我最初将 apk add libzip-dev
添加到与 gcc make postgresql-dev
一起安装的虚拟包中,后来我将其删除以保持图像较小。
这个有效:
RUN apk add openjdk11-jre-headless libzip-dev \ # libzip-dev not part of virtual package
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*
这不有效:
RUN apk add openjdk11-jre-headless \
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev libzip-dev \ # libzip-dev part of virtual package
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*
我使用 php:7.4-fpm-alpine
构建了一个 PHP dockerfile
FROM php:7.4-fpm-alpine
# Apk install
RUN apk --no-cache update && apk --no-cache add bash git
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');" && mv composer.phar /usr/local/bin/composer
# Symfony CLI
RUN wget https://get.symfony.com/cli/installer -O - | bash && mv /root/.symfony/bin/symfony /usr/local/bin/symfony
WORKDIR /var/www/html
我有一个 Dockerfile
,其构建命令如下:
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
我从构建输出中收到此警告:
WARNING: Use of bundled libzip is deprecated and will be removed.
configure: WARNING: Some features such as encryption and bzip2 are not available.
configure: WARNING: Use system library and --with-libzip is recommended.
在没有这些警告的情况下安装 zip 扩展的正确方法是什么?
我完整的 Dockerfile 如下所示:
FROM php:7.2-apache
RUN apt-get clean
RUN apt-get update
#install some basic tools
RUN apt-get install -y \
git \
tree \
vim \
wget \
subversion
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
#setup composer
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
&& ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
WORKDIR /var/www/
它looks like PHP no longer bundles libzip. You need to install it。您安装 zlib1g-dev
,但安装 libzip-dev
。这会将 zlib1g-dev
作为依赖项进行安装,并允许 configure
脚本检测到 libzip
已安装。
对于 PHP < 7.3,您需要
docker-php-ext-configure zip --with-libzip
在使用
执行安装之前docker-php-ext-install zip
如上次警告所示。
简而言之:将 Docker 文件的相关部分更改为
对于 PHP < 7.3
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-configure zip --with-libzip \
&& docker-php-ext-install zip
对于PHP>=7.3
#install some base extensions
RUN apt-get install -y \
libzip-dev \
zip \
&& docker-php-ext-install zip
我已验证此构建符合预期。
如果您不使用 Docker PHP base image,事情可能会容易得多。例如,对于 Alpine,以下 Docker 文件将为您提供安装了 zip 扩展名的 PHP 7。
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add php7 php7-zip composer
我使用 php:7.2-fpm-alpine
FROM php:7.2-fpm-alpine
WORKDIR /var/www
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip --with-libzip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
为了构建 php/apache 容器,您只需首先安装 libzip-dev 库。至少使用 docker 图像 php:7.3-apache
FROM php:7.3-apache
MAINTAINER XXX
RUN apt-get update
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip
希望对您有所帮助
如果您使用的是 7.4,这对我有用:
FROM php:7.4-fpm-alpine
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
这对我有用:
RUN docker-php-ext-configure zip --with-libzip
显然 zip 扩展在运行时(不仅仅是构建时)需要 libzip-dev
包。我最初将 apk add libzip-dev
添加到与 gcc make postgresql-dev
一起安装的虚拟包中,后来我将其删除以保持图像较小。
这个有效:
RUN apk add openjdk11-jre-headless libzip-dev \ # libzip-dev not part of virtual package
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*
这不有效:
RUN apk add openjdk11-jre-headless \
&& apk add --no-cache --virtual \
.build-deps autoconf g++ make postgresql-dev libzip-dev \ # libzip-dev part of virtual package
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_pgsql bcmath \
&& pecl install redis-5.3.1 \
&& pecl install xdebug-beta \
&& docker-php-ext-enable redis opcache xdebug \
&& apk add libpq ca-certificates curl \
&& apk del .build-deps \
&& rm -rf /tmp/* \
&& rm -rf /var/cache/apk/*
我使用 php:7.4-fpm-alpine
构建了一个 PHP dockerfileFROM php:7.4-fpm-alpine
# Apk install
RUN apk --no-cache update && apk --no-cache add bash git
RUN apk add --no-cache zip libzip-dev
RUN docker-php-ext-configure zip
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');" && mv composer.phar /usr/local/bin/composer
# Symfony CLI
RUN wget https://get.symfony.com/cli/installer -O - | bash && mv /root/.symfony/bin/symfony /usr/local/bin/symfony
WORKDIR /var/www/html