在 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

当我运行 ‘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 许可协议

阅读 1.2k
2 个回答

您应该将 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

编辑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

希望有帮助。

原文由 lmtx 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个答案为时已晚,但它会有所帮助。

 RUN apt-get update && \
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ && \
docker-php-ext-install gd

原文由 tvs89 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题