在Docker中安装GD

我是一个完整的Docker新手,但不得不维护一个现有的系统。 我正在使用的Dockerfile如下所示:

FROM php:5.6-apache RUN docker-php-ext-install mysql mysqli RUN apt-get update -y && apt-get install -y sendmail RUN apt-get update && \ apt-get install -y \ zlib1g-dev RUN docker-php-ext-install mbstring RUN docker-php-ext-install zip RUN docker-php-ext-install gd 

当我运行“dockerbuild设[sitename]”一切似乎没问题,直到我得到错误:

 configure: error: png.h not found. The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1 

这个错误的原因是什么?

您应该将libpng-dev包添加到您的Dockerfile

 FROM php:5.6-apache RUN docker-php-ext-install mysql mysqli RUN apt-get update -y && apt-get install -y sendmail libpng-dev RUN apt-get update && \ apt-get install -y \ zlib1g-dev RUN docker-php-ext-install mbstring RUN docker-php-ext-install zip RUN docker-php-ext-install gd 

然后进入Dockerfile目录并运行:

docker build -t sitename .

它在我的情况下工作:

 Removing intermediate container f03522715567 Successfully built 9d69212196a2 

让我知道,如果你有任何错误。

编辑:

你应该看到这样的东西:

 REPOSITORY TAG IMAGE ID CREATED SIZE sitename latest 9d69212196a2 19 minutes ago 414 MB <none> <none> b6c69576a359 25 minutes ago 412.3 MB 

EDIT2:

只是要检查一切:

请按照以下方式运行docker build命令:

docker build -t sitename:1.0 .

(添加:1.0不应该改变任何东西,我添加它只是在docker images输出有额外的行)

然后启动容器:

docker run --name sitename_test -p 80:80 sitename:1.0

它应该工作得很好。

我认为Apache是​​使用标准端口(80) – 也许你需要调整。 如果您在端口80上侦听其他服务/容器,则可以使您的容器在其他端口上侦听:

docker run --name sitename_test -p 8080:80 sitename:1.0

这会将来自端口8080的stream量redirect到容器内部的端口80。

通常你在后台运行容器。 为此,将-d选项添加到docker run命令(但是出于testing目的,您可以省略-d以在控制台中查看输出)。

希望有所帮助。