programing

PHP zip 확장자를 사용한 도커 이미지 빌드에 "bundled libzip is decommended" 경고가 표시됨

randomtip 2023. 2. 4. 08:33
반응형

PHP zip 확장자를 사용한 도커 이미지 빌드에 "bundled libzip is decommended" 경고가 표시됨

나는 가지고 있다Dockerfile다음과 같은 빌드 명령을 사용합니다.

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

빌드 출력에서 다음 경고를 받습니다.

경고: 번들 libzip 사용은 더 이상 사용되지 않으므로 제거됩니다.
구성: 경고: 암호화 및 bzip2와 같은 일부 기능은 사용할 수 없습니다.
구성: 경고: 시스템 라이브러리를 사용하고 --with-libzip을 권장합니다.

이러한 경고 없이 Zip Extension을 설치하는 올바른 방법은 무엇입니까?

Docker 파일 전체는 다음과 같습니다.

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/

PHP는 더 이상 libzip을 번들하지 않는 것 같습니다.인스톨필요가 있습니다.인스톨을 실시합니다.zlib1g-dev를 인스톨 합니다.libzip-dev인스톨 됩니다.zlib1g-dev의존관계로서, 또한configure검출하기 위한 스크립트libzip가 인스톨 됩니다.

PHP < 7.3 의 경우는, 다음의 조작을 실시할 필요가 있습니다.

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-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 이미지를 사용하지 않는 경우 훨씬 더 쉬워질 수 있습니다.예를 들어 Alphine의 경우 다음 Dockerfile은 zip 확장자가 설치된 PHP 7을 제공합니다.

FROM alpine:latest

RUN apk update && apk upgrade
RUN apk add php7 php7-zip composer

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 

도커에 PHP 컨테이너를 구축했습니다.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 

내선번호에 필요한 건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/apache 컨테이너를 구축하려면 먼저 libzip-dev 라이브러리를 설치해야 합니다.적어도 도커 이미지 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

도움이 되었으면 좋겠다

php:7.4-fpm-alpine을 사용하여 PHP 도커 파일을 만들었습니다.

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

이건 내게 효과가 있었어:

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

언급URL : https://stackoverflow.com/questions/48700453/docker-image-build-with-php-zip-extension-shows-bundled-libzip-is-deprecated-w

반응형