我是一个完整的 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
当我运行 ‘docker build [sitename]’ 时,一切似乎都正常,直到出现错误:
configure: error: png.h not found.
The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1
这个错误的原因是什么?
原文由 evilscary 发布,翻译遵循 CC BY-SA 4.0 许可协议
您应该将
libpng-dev
包添加到您的Dockerfile
中:然后使用
Dockerfile
进入目录并运行:docker build -t sitename .
它适用于我的情况:
如果您有任何错误,请告诉我。
编辑:
您应该看到如下内容:
编辑2:
只是为了仔细检查一切:
请以这种方式运行
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 重定向到容器“内部”的端口 80。
通常你在后台运行容器。为此,将
-d
选项添加到docker run
命令(但出于测试目的,您可以省略-d
以在控制台中查看输出)。如果您决定在后台运行容器,您可以使用
docker logs sitename_test
检查日志。要跟踪日志(并查看日志中的更新),请使用-f
选项:docker logs -f sitename_test
希望有帮助。