繁体   English   中英

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

[英]add yaml extension to php on using official Alpine Docker image

我正在使用这个官方的 php Docker 镜像: https : //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. 安装构建 deps,使用--no-cache意味着您正在使用更新的索引而不是本地缓存(因此不需要--update或将 pkg 保存在缓存中)。 --virtual意味着您正在为以后可以删除的所有包创建虚拟引用(因为它们在编译过程后无用)

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

  3. 删除之前的构建依赖

如果您仍然遇到任何缺少的依赖项,您可以将其视为参考: https : //pkgs.alpinelinux.org/packages

最新版本,至少从 2.0.4 开始,需要安装 yaml-dev 才能运行。 因此,将其移至要保留在映像中的包。 此外,在 alpine 3.11 结合 php-alpine 存储库,我遇到了一个问题,它希望您添加 php.ini 文件的位置。

只需添加以下内容:RUN pear config-set php_ini /etc/php7/php.ini

如果需要,您可以将路径更改为 php.ini 所在位置的路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM