如何在 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 扩展