使用官方的Alpine Docker映像将yaml扩展添加到php

我正在使用这个官方的php Docker映像:[https](https://github.com/docker-

library/php/blob/76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68/7.1/alpine/Dockerfile)

//github.com/docker-

library/php/blob/76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68/7.1/alpine/Dockerfile

现在,我需要添加对yaml扩展的支持,而该扩展未与php捆绑在一起。我看到我正在使用的基本图像使用phpize。

我正在尝试这种方法:

FROM php:7.1.5-alpine

# Install and enable yaml extension support to php

RUN apk add --update yaml yaml-dev

RUN pecl channel-update pecl.php.net

RUN pecl install yaml-2.0.0 && docker-php-ext-enable yaml

但是我得到这个错误:

running: phpize

Configuring for:

PHP Api Version: 20160303

Zend Module Api No: 20160303

Zend Extension Api No: 320160303

Cannot find autoconf. Please check your autoconf installation and the

$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

ERROR: Service 'php_env' failed to build: The command '/bin/sh -c pecl install yaml-2.0.0 && docker-php-ext-enable yaml' returned a non-zero code: 1

使用该映像并添加该支持的最惯用的docker方法是什么?

我应该将其用作基础,还是可以添加参数以使所需扩展名可配置?

回答:

Alpine使用apk来安装软件包。编译过程中抱怨缺少autoconf,这在Alpine的autoconf软件包中找到。

我建议您运行以下命令:

RUN apk add --no-cache --virtual .build-deps \

g++ make autoconf yaml-dev

RUN pecl channel-update pecl.php.net

RUN pecl install yaml-2.0.0 && docker-php-ext-enable yaml

RUN apk del --purge .build-deps

如果需要安装其他非开发库,则可以在单独的apk add命令中安装它们。此过程将:

  1. 安装build deps,使用--no-cache表示您正在使用更新的索引并且未在本地缓存(因此无需--update将pkg或保存在缓存中)。--virtual表示您正在为所有以后可以删除的软件包创建虚拟引用(因为它们在编译过程后无用)

  2. 用pecl和docker-php-ext-enable做你的东西

  3. 删除以前的构建部门

如果仍然遇到任何缺少的依赖性,则可以将其作为参考:https :

//pkgs.alpinelinux.org/packages

以上是 使用官方的Alpine Docker映像将yaml扩展添加到php 的全部内容, 来源链接: utcz.com/qa/430182.html

回到顶部