一尘不染

在Docker中安装GD

docker

我是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

此错误的原因是什么?


阅读 692

收藏
2020-06-17

共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

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

希望能有所帮助。

2020-06-17