从 Docker 容器向 php 添加扩展

Adding extensions to php from a Docker container

我正在使用 Arch Linux os。

我有一个容器 运行 一个 php 项目,我需要启用 gmp 和 curl 扩展。

我的容器基于 Alpine 镜像,我可以使用 docker exec {container-name} apk add php-gmp php-curl.

安装扩展

然后如果我 运行 docker exec {container-name} php -m 显示我的扩展,控制台打印 gmpcurl。很好,这一切都很好,我还在同一容器内的 php.ini 文件 运行ning 中启用了扩展。

但是如果我去一个控制器并且 return extension_loaded('gmp') 它打印 false!

我错过了什么?

Jon Stirling 大喊他的回答。

我需要重新编辑 Dockerfile 以包含 gmpcurl 包,然后还有 Dockerfile 编辑 php.ini 配置文件以包含 gmpcurl 扩展。

所以:

RUN apk add --no-cache \

...{all my other packages}...

php-gpm \

php-curl

RUN sed -i 's/extension=gmp.$/extension=gmp/;s/extension=curl.$/extension=curl/;' /etc/php7/php.ini

最后一行使用终端工具 'sed -i' 替换匹配 extension=gmpextension=curl 的任何行,并替换它们所在的整行。

这基本上取消了 php.ini 文件中的注释,而无需复制一个全新的 php.ini 目录中的文件。

使用 docker-compose build 重建整个项目然后重新启动所有内容后 extension_loaded('gmp') 返回 true