libgd没有安装在php中:5.6-cli docker

时间:2017-02-10 16:10:33

标签: php docker gd dockerfile php-extension

我在容器中有一个项目,我试图使用gd lib进行图像创建。

我在容器的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

1 个答案:

答案 0 :(得分:4)

不要手动安装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在输出中有点冗长,因此我喜欢将其输出传递给/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. 如果您构建了容器,然后从中运行apt-get install php5-gd,那么您的问题就不明确了。如果是这样,那么只会在该容器中安装php5-gd,每次重新创建它时,它都会消失。始终在Dockerfile

  2. 中将内容添加到容器中
  3. 尝试php:7.1-cli。你真的需要支持php 5.6吗? ;)