sak*_*zai 15 php php-extension docker libzip
我有一个Dockerfile像这样的构建命令:
#install some base extensions
RUN apt-get install -y \
zlib1g-dev \
zip \
&& docker-php-ext-install zip
Run Code Online (Sandbox Code Playgroud)
我从构建输出中收到此警告:
警告:不推荐使用捆绑的libzip,将其删除.
configure:警告:某些功能(如加密和bzip2)不可用.
configure:警告:建议使用系统库和--with-libzip.
在没有这些警告的情况下安装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/
Run Code Online (Sandbox Code Playgroud)
Jus*_*ent 52
它看起来像 PHP不再绑定libzip.你需要安装它.你安装zlib1g-dev,而是安装libzip-dev.这将zlib1g-dev作为依赖项安装,并允许configure脚本检测libzip已安装的脚本.
然后,您需要zlib1g-dev 在执行安装之前使用libzip-dev,如最后一个警告所示.
简而言之:将Dockerfile的相关部分更改为
docker-php-ext-configure zip --with-libzip
Run Code Online (Sandbox Code Playgroud)
我已经验证了这是按照预期构建的.
Cha*_*lie 11
显然,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 Code Online (Sandbox Code Playgroud)
这不起作用:
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/*
Run Code Online (Sandbox Code Playgroud)
小智 7
我使用 Docker 在 Docker 上构建了一个 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
Run Code Online (Sandbox Code Playgroud)
为了构建 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
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
如果您使用的是 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 Code Online (Sandbox Code Playgroud)