我正在学习Docker,并使用了两周。现在我有一个非常简单的任务,通过Composer安装PHP库。通常,在没有Docker的情况下工作时:
composer install
现在,因为我正在使用Docker,我发现有一个Docker容器,它为我保存 composer :
docker run --rm -v $(pwd):/app composer/composer install
这工作得很好,但是有一些库需要安装特定的php库,比如bcmath,所以我将其添加到我的Dockerfile中
FROM php:7.0-apache
RUN docker-php-ext-install bcmath <-- added this line
COPY . /var/www/html
WORKDIR /var/www/html
EXPOSE 80
当我重新生成我的容器时,这段代码返回true
var_dump(extension_loaded('bcmath'))
万岁!BCMath安装正确,但composer无法识别它,因为库没有安装在composer容器中!
现在我可以忽略它,通过使用
docker run --rm -v $(pwd):/app composer/composer install --ignore-platform-reqs
但在我看来,这是一个肮脏的工作环境, composer 不能验证我的平台。除了在我的Dockerfile中下载composer并且不重用现有容器之外,还有什么干净的解决方案吗?
2条答案
按热度按时间nhhxz33t1#
您可以使用
platform
设置来模拟PHP容器配置。这将类似于--ignore-platform-reqs
开关(它将使用PHP和composer.json
中配置的扩展,而不是当前PHP安装的真实的信息),但它为您提供了更细粒度的控制。而不是“忽略所有平台需求检查”,你可以说“我真的安装了bcmath
,相信我”。所有其他要求都将被检查,所以如果新要求将弹出,您仍然会收到警告。sc4hvdpw2#
你需要PHP + PHP扩展+ composer 在同一个(!)container = DevContainer。
只需使用提供的命令here安装Composer。