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 

两个注释:

  1. 从你的问题是不清楚,如果你build立你的容器,然后运行apt-get install php5-gd从它apt-get install php5-gd 。 如果是这样的话,那么只能在该容器中安装php5-gd,并且每次重新创build它时,它都将消失。 总是将东西添加到Dockerfile的容器。

  2. php:7.1-cli一试。 你真的需要支持PHP 5.6吗? ;)