首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头安装GD

码头安装GD
EN

Stack Overflow用户
提问于 2016-09-23 09:16:13
回答 5查看 149.8K关注 0票数 101

我是一个完整的码头新手,但必须维持一个现有的制度。我使用的Dockerfile如下所示:

代码语言:javascript
复制
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

当我运行“”时,一切似乎都正常,直到我得到错误:

代码语言:javascript
复制
configure: error: png.h not found.
The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1

造成这一错误的原因是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-09-23 10:30:57

应该将libpng-dev包添加到Dockerfile

代码语言:javascript
复制
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 .

它在我的案例中起了作用:

代码语言:javascript
复制
Removing intermediate container f03522715567
Successfully built 9d69212196a2

如果你有任何错误请告诉我。

编辑:

你应该看到这样的东西:

代码语言:javascript
复制
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到80端口“在”容器内的流量。

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

如果您决定在后台运行容器,可以使用docker logs sitename_test检查日志。要跟踪日志(并查看日志中的更新),请使用-f选项:

docker logs -f sitename_test

希望这能有所帮助。

票数 204
EN

Stack Overflow用户

发布于 2020-04-26 12:25:49

这不是OP的情况,但是我发现对于那些使用php:7.4-fpm-alpine的人来说,语法有点不同。

代码语言:javascript
复制
FROM php:7.4-fpm-alpine

# ... Other instructions ...

# Setup GD extension
RUN apk add --no-cache \
      freetype \
      libjpeg-turbo \
      libpng \
      freetype-dev \
      libjpeg-turbo-dev \
      libpng-dev \
    && docker-php-ext-configure gd \
      --with-freetype=/usr/include/ \
      # --with-png=/usr/include/ \ # No longer necessary as of 7.4; https://github.com/docker-library/php/pull/910#issuecomment-559383597
      --with-jpeg=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-enable gd \
    && apk del --no-cache \
      freetype-dev \
      libjpeg-turbo-dev \
      libpng-dev \
    && rm -rf /tmp/*

# ... Other instructions ...
票数 30
EN

Stack Overflow用户

发布于 2019-05-19 06:05:12

这个Dockerfile和Php7 https://hub.docker.com/r/giapnh/php7-gd一起工作。

代码语言:javascript
复制
FROM php:7-fpm

RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN apt-get update -y && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev \
    libfreetype6-dev
RUN apt-get update && \
    apt-get install -y \
        zlib1g-dev 

RUN docker-php-ext-install mbstring

RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip

RUN docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \
    --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \
    --enable-gd-native-ttf

RUN docker-php-ext-install gd

CMD ["php-fpm"]

EXPOSE 9000
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39657058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档