如何在 Docker 上安装 mcrypt

Posted

技术标签:

【中文标题】如何在 Docker 上安装 mcrypt【英文标题】:How to install mcrypt on Docker 【发布时间】:2018-04-21 05:43:10 【问题描述】:

我有一个带有 Phalcon3 和 php 7 的 Docker 容器。我正在尝试安装 php 扩展 Mcrypt,但没有运气。

如果我对容器执行 ssh 并执行:

apt-get update
apt-get install php7.0-mcrypt  

我得到以下信息:

E: Unable to locate package php7.0-mcrypt
E: Couldn't find any package by regex 'php7.0-mcrypt'

有没有办法安装它?

【问题讨论】:

您应该始终以apt-get update 开头,因此请尝试类似apt-get update && apt-get install -y php7.0-mcrypt 的内容,首先需要更新,因为您可能使用的操作系统(ubuntu、Debian 等)有很多更新自从它的到来。顺便说一句,sudo 不是必需的,除非你做 USER myuser,否则你是 root 用户 看看hub.docker.com/r/phpdocker/phpdocker/~/dockerfile(FROM php:7.1-fpm 是建立在 Debian 上的) @user2915097 对不起,是的,我做了 apt-get update,你说得对,sudo 是不必要的,事实上它会抱怨它。我更新了命令。正如您在第二条评论中所建议的那样,我还准备修改现有容器,而不是创建新容器。 贴一下Dockerfile,会更简单 【参考方案1】:

来自 PHP 手册:

此扩展已移至 » PECL 存储库,自 PHP 7.4.0 起不再与 PHP 捆绑。

所以在你的 Dockerfile 中你必须:

RUN apt-get install libmcrypt-dev
RUN pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt

【讨论】:

似乎工作,但在兰多下不完全。还是我需要在那里添加一些东西? ***.com/questions/54752814/…【参考方案2】:

让我们看一下php docker image的官方手册PHP核心扩展部分

例如,如果你想要一个带有 iconv 的 PHP-FPM 图像,mcrypt 和 gd 扩展,你可以继承你喜欢的基础镜像,并且 像这样编写自己的 Dockerfile:

FROM php:7.0-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

请记住,您必须手动为您的扩展安装依赖项。如果 扩展需要自定义配置参数,您可以使用 docker-php-ext-configure 脚本就像这个例子。没有必要 在这种情况下手动运行 docker-php-source ,因为这是由 配置和安装脚本。

【讨论】:

感谢您的帮助。您还可以在容器上 ssh 并执行相同的命令: apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ && docker-php-ext- install -j$(nproc) iconv mcrypt \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php -ext-install -j$(nproc) gd

以上是关于如何在 Docker 上安装 mcrypt的主要内容,如果未能解决你的问题,请参考以下文章

php mcrypt 在 docker 容器上启用后无法正常工作

如何修复 Docker“/usr/src/php/ext/mcrypt 不存在”构建错误?

如何在 xampp linux 上启用 mcrypt php 扩展

如何让 MCrypt 和 PHP 在 CentOS 上协同工作

如何在 xampp 中安装 mcrypt 扩展

如何在 Mac OSX 10.9 上的 php 中启用 mcrypt?