Docker image build with PHP zip extension shows “bundled libzip is deprecated” warning

前端 未结 6 2038
囚心锁ツ
囚心锁ツ 2020-12-15 15:49

I have a Dockerfile with a build command like this:

#install some base extensions
RUN apt-get install -y \\
        zlib1g-dev \\
        zip \\         


        
相关标签:
6条回答
  • 2020-12-15 15:59

    Apparently the zip extension needs the libzip-dev package at runtime (not just build time). I originally added the apk add libzip-dev to a virtual package I installed along with gcc make postgresql-dev which I later removed to keep the image small.

    This works:

    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/*
    

    This does not work:

    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/*
    
    0 讨论(0)
  • 2020-12-15 16:09

    this worked for me:

    RUN docker-php-ext-configure zip --with-libzip
    
    0 讨论(0)
  • 2020-12-15 16:17

    It looks like PHP no longer bundles libzip. You need to install it. You install zlib1g-dev, but instead install libzip-dev. This installs zlib1g-dev as a dependency and allows the configure script to detect that libzip is installed.

    For PHP < 7.3, you then need to

    docker-php-ext-configure zip --with-libzip
    

    before performing the installation with

    docker-php-ext-install zip
    

    as the last warning indicates.

    In short: change the relevant part of your Dockerfile to

    For 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
    

    For PHP >= 7.3

    #install some base extensions
    RUN apt-get install -y \
            libzip-dev \
            zip \
      && docker-php-ext-install zip
    

    I have verified that this builds as expected.

     


     

    In case you are not using the Docker PHP base image, things may be much easier. For example, for Alpine the following Dockerfile will get you PHP 7 with the zip extension installed.

    FROM alpine:latest
    
    RUN apk update && apk upgrade
    RUN apk add php7 php7-zip composer
    
    0 讨论(0)
  • 2020-12-15 16:21

    In order to build a php/apache container you just have to first install libzip-dev library. At least using the docker image 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
    

    Hope it helps

    0 讨论(0)
  • 2020-12-15 16:23

    I built a PHP container on Docker using 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 
    
    0 讨论(0)
  • 2020-12-15 16:25

    In case you are using 7.4 this worked for me:

    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 
    
    0 讨论(0)
提交回复
热议问题