在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
以在控制台中查看输出)。
希望有所帮助。