我的 Dockerfile 的内容:
FROM php:8.1-apache
WORKDIR /var/www/html/
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& a2enmod rewrite \
&& docker-php-ext-install zip
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN groupadd -r user && useradd -r -g user user
USER user
RUN composer install --no-dev
COPY . .
EXPOSE 80
作曲家安装在它告诉我需要该libzip
软件包的地方失败了。但是我找不到那个包裹,无论是通过pecl
,还是通过apt-get
; 正如大多数论坛帖子所指的那样。我如何安装libzip
才能最终运行?
关于我的 Dockerfile 行的一些注释;如果我的设置有误,请随时纠正我;这是我第一次这样做:
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY composer.json composer.json
COPY composer.lock composer.lock
据我了解,官方文档告诉您使用这种多阶段方法让作曲家以最佳方式在您的 PHP Docker 容器中运行。如果我理解正确的话,这样做可以让你分享你的图像,而不需要你的同事在本地安装作曲家/下载包;然后一切都将在容器内完成。这正是我要找的。
RUN groupadd -r user && useradd -r -g user user
USER user
RUN composer install --no-dev
我首先尝试简单地运行最后一行composer install --no-dev
,这实际上是行不通的,因为容器不允许您执行根命令;由默认使用composer
。因此采用此解决方法的原因(更改用户也是官方文档推荐的;根据上面的链接)。
&& docker-php-ext-install zip
当最终能够composer install
在容器中运行命令时,它告诉我zip
需要扩展;这就是我添加docker-php-ext-install zip
命令的原因。libzip
现在,由于最初提到的问题,我陷入困境。
如果您看到更好的设置作曲家的方法;我很高兴听到更好的方法。
docker-php-ext-enable
正在寻找 libzip头文件。你需要的是包裹libzip-dev
。