Php
如何在 PHP Apache Docker 容器中正確設置作曲家
我的 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
軟體包時失敗。但是,無論 viapecl
, via ,我都找不到那個包apt-get
;正如大多數論壇文章所指的那樣。我該如何安裝libzip
才能最終讓事情執行起來?關於我的 Dockerfile 行的一些註釋;如果我的設置有誤,請隨時糾正我;這是我第一次這樣做:
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer COPY composer.json composer.json COPY composer.lock composer.lock
據我了解,官方文件告訴您使用這種多階段方法讓 Composer 以最佳方式在您的 PHP Docker 容器中執行。如果我理解正確,這樣做可以讓您共享您的圖像,而無需您的同事在本地安裝 composer / 下載包;然後一切都將在容器內完成。這正是我正在尋找的。
RUN groupadd -r user && useradd -r -g user user USER user RUN composer install --no-dev
我首先嘗試簡單地執行最後一行
composer install --no-dev
,這實際上是行不通的,因為容器不會讓你執行 root 命令;預設情況下由composer
. 因此,這種解決方法的原因(更改使用者也是官方文件推薦的;根據上面的連結)。
&& docker-php-ext-install zip
當最終能夠
composer install
在容器中執行命令時,它告訴我zip
需要擴展;這就是我添加docker-php-ext-install zip
命令的原因。libzip
現在,由於最初提到的問題,我被困住了。如果您看到設置作曲家的更好方法;我很高興聽到更好的方法。
docker-php-ext-enable
正在尋找 libzip標頭檔。你需要的是包libzip-dev
。RUN pecl install xdebug \ && apt update \ && apt install libzip-dev -y \ && docker-php-ext-enable xdebug \ && a2enmod rewrite \ && docker-php-ext-install zip \ && rm -rf /var/lib/apt/lists/*