libgd未安装在php:5.6-cli docker中
我有一个容器内的项目,我试图使用graphics创buildgd库。
我在容器的bash里面执行这个命令:
apt-get install php5-gd
重新启动并执行php -m
后没有任何更改
我该怎么办?
编辑:
我添加到我的Dockerfile中:
RUN apt-get -qq update && apt-get -qq install libpng-dev RUN docker-php-ext-install gd
我执行docker build -t [name]
但是当我执行bash并键入: php -m
[PHP Modules] Core ctype curl date dom ereg fileinfo filter ftp hash iconv json libxml mbstring mysql mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session SimpleXML SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zip zlib
不要手动安装gd。 那里有docker-php-ext-install
。
在dockerfile里面,添加:
RUN docker-php-ext-install gd
docker-php-ext-install
有一点烦恼,你必须手动弄清楚你需要什么依赖关系。 他们不会自动解决。 由于这个原因,命令会自行崩溃,具体如下:
configure: error: png.h not found.
如果你查找错误,你会意识到你需要libpng-dev
。
因此最后,整个Dockerfile
应该是这样的:
FROM php:5.6-cli RUN apt-get -qq update && apt-get -qq install libpng-dev RUN docker-php-ext-install gd > /dev/null
docker-php-ext-install在其输出中有点冗长,因此我喜欢将其输出pipe道到/dev/null
。 错误和警告仍将被打印。
您可以通过运行图像来检查图像是否具有适当的扩展名:
docker build -t php-gd . docker run php-gd /bin/bash -c "php -m | grep gd"
将打印:
gd
在docker-compose栈中是一样的:
docker-compose.yml
:
gd-example: build: . tty: true docker-compose up --build -d docker ps // to find container's name. You may also set in the config docker exec -it docker_gd-example_1 php -m | grep gd
两个注释:
-
从你的问题是不清楚,如果你build立你的容器,然后运行
apt-get install php5-gd
从它apt-get install php5-gd
。 如果是这样的话,那么只能在该容器中安装php5-gd,并且每次重新创build它时,它都将消失。 总是将东西添加到Dockerfile
的容器。 -
给
php:7.1-cli
一试。 你真的需要支持PHP 5.6吗? ;)