现在,我需要添加对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
命令中安装它们。此过程将:
安装build deps,使用--no-cache
表示您正在使用更新的索引并且未在本地缓存(因此无需--update
将pkg或保存在缓存中)。--virtual
表示您正在为所有以后可以删除的软件包创建虚拟引用(因为它们在编译过程后无用)
用pecl和docker-php-ext-enable做你的东西
删除以前的构建部门
如果仍然遇到任何缺少的依赖性,则可以将其作为参考:https :
//pkgs.alpinelinux.org/packages
问题内容: 我通过运行此命令为Tomcat提取了官方Docker镜像。 通过使用它作为基本映像,我需要构建新映像,该映像在 文件夹中包含我的war文件。我这样创建了Dockerfile。 当我通过构建映像运行此Dockerfile时,无法看到Tomcat主页。 谁能告诉我如何将我的warfile添加到官方Tomcat图像webapp文件夹中。 问题答案: 从仓库的文档中读取内容,您会做类似的事情
我尝试将扩展添加到我的/(基于linux alpine)映像中: 尝试创建扩展时,出现以下错误: 但当我搜索容器中的文件时,我可以在不同的目录中找到它们: 如何安装到不同的目录或配置来识别我添加的扩展? 最新消息 当我只是的文件到我得到的错误: 更新2 因此,的问题是,指向但是在中。当我将所有内容移动到相应的目录时,我可以成功创建扩展。 这就引出了我希望找到答案的问题。如何将安装到
问题内容: 我想使用基于官方Docker Docker镜像的 扩展名构建我的PHP- FPM镜像,例如,使用以下Dockerfile:php:5.6-fpm。 文档说我可以通过这种方式安装扩展,手动安装扩展的依赖项: 在没有Docker的情况下,我使用安装了它。但是如何使用上面的方法安装它? 问题答案: 我发现了两种安装官方php-fpm Docker image的php- redis 扩展的方法
问题内容: 我想使用基于官方Docker Docker镜像的 扩展名构建PHP- FPM镜像,例如,使用以下Dockerfile:php:5.6-fpm。 文档说我可以通过这种方式安装扩展,手动安装扩展的依赖项: 在没有Docker的情况下,我使用安装了它。但是如何使用上面的方法安装它? 问题答案: 我发现了两种安装官方php-fpm Docker image的php- redis 扩展的方法。他
我想将ssh服务添加到容器中。我可以软件包(在之后),但我不知道如何启动它。通常(不在此容器中),我们可以通过的常规命令启动服务。但我不知道如何在容器中做到这一点而不干扰和机制。 dockerfile附带了一个(请参阅此处的源代码),它非常希望有一行用于 我看过一些相关的SO文章,比如这些: null 但由于docker文件中的和的相互作用,它们在这里并不直接适用。
问题内容: 我正在尝试扩展CouchDB docker映像以预填充CouchDB(带有初始数据库,设计文档等)。 为了创建一个名为的数据库,我首先尝试了以下缩写: 但是构建失败,因为在构建时尚未启动ouchdb服务。所以我将其更改为: 注意: 这是我发现使其起作用的唯一方法,因为它不适用于curl选项, 第二个只是检查数据库是否已创建。 构建似乎工作正常: 奇怪的是,现在当我将其作为容器启动时,数