我是一个完全的 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

这个错误的原因是什么?

推荐答案

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

它在我的 case 中奏效了:

Removing intermediate container f03522715567
Successfully built 9d69212196a2

如果有任何错误,请告诉我.

EDIT:

你应该看到这样的东西:

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端口.

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

如果决定在后台运行容器,可以使用docker logs sitename_test判断日志(log).要查看日志(log)(请参阅日志(log)中的更新),请使用-f选项:

docker logs -f sitename_test

希望有帮助.

Php相关问答推荐

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

Laravel集合块()方法

如何限制WordPress自定义分类术语页面中的术语数量

从WooCommerce订单状态更改更新用户自定义元数据

将SVG包含在另一个php生成的SVG中

在laravel 9或10 php中向中间件响应添加自定义数据

如何在UML类图中可视化变量引用数组

设置WordPress最近的帖子小部件按修改日期排序

未收到Strava WebHook事件数据

无法在Laravel中将日志(log)通道设置为空

即使在WooCommerce购物车中添加了两次产品,也要将所有项目设置为空白行

Select 本地提货时隐藏WooCommerce显示的发货成本

以编程方式同步 WPML 翻译更改 Woocommerce 产品销售价格

Woocommerce 仅在前端为登录用户提供价格折扣

PHP 中是否有 is_closure() 函数?

判断类别是否存在 Shopware 6

PHP / DOM : 解析 HTML 以提取基于类的数​​据

使用 Process facade 在外部 Laravel 项目上运行 Artisan 命令会返回主项目的数据库错误

在 WooCommerce 结帐后更新用户元字段

如何使用先前 SELECT 的结果来 SELECT SQL 数据