docker安装php7.2记录

问题

准备通过Dockerfile构建php镜像,在使用docker-php-ext-install安装mcrypt扩展时遇到如下错误:

error: /usr/src/php/ext/mcrypt does not exist

原因

mycrypt extension is not provided with the PHP source since 7.2 , but are instead available through PECL. To install a PECL extension in docker, use pecl install to download and compile it, then use docker-php-ext-enable to enable it:

php从7.2开始不再在源码里支持mcrypt扩展而转到pecl方式支持

pecl install mcrypt-1.0.1
docker-php-ext-enable mcrypt

解决

版本切换到7.1再执行构建时问题没有复现,同时按照

pecl install mcrypt-1.0.1
docker-php-ext-enable mcrypt

的方式安装之后也没有出现上述问题

问题

安装过程中提示(虽然不会影响最终结果)

WARNING: Ignoring APKINDEX.e3d33561.tar.gz: No such file or directory

解决

doing apk update fixes the problem (updates the index).

Request: Improve the error message.

Dockerfile(php7.2)

FROM daocloud.io/php:7.2-fpm-alpine

LABEL maintainer="lestat@lestat.me"

# 修改镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装依赖,核心扩展,pecl扩展,git,composer,npm工具
RUN apk update && apk add --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        curl-dev \
        imagemagick-dev \
        libtool \
        libxml2-dev \
        postgresql-dev \
        sqlite-dev \
	libmcrypt-dev \
        freetype-dev \
        libjpeg-turbo-dev \
        libpng-dev \
    && apk add --no-cache \
        curl \
        git \
        imagemagick \
        mysql-client \
        postgresql-libs \
        nodejs \
        nodejs-npm \
    # 配置npm中国镜像
    && npm config set registry https://registry.npm.taobao.org \
    && pecl install imagick \
    && pecl install mcrypt-1.0.1 \
    && docker-php-ext-enable mcrypt \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install \
        curl \
        mbstring \
        pdo \
        pdo_mysql \
        pdo_pgsql \
        pdo_sqlite \
        pcntl \
        tokenizer \
        xml \
        zip \
	&& docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" gd \
    && pecl install -o -f redis \
    && rm -rf /tmp/pear \
    && docker-php-ext-enable redis

# 安装composer并允许root用户运行
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_HOME=/usr/local/share/composer
RUN mkdir -p /usr/local/share/composer \
	&& curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
	&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot \
	&& rm -f /tmp/composer-setup.* \
    # 配置composer中国全量镜像
    && composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 对其他容器开放9000端口
EXPOSE 9000
  

原文

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nimomeng的自我进阶

简单免费的文档中心——dokuWiki搭建指南

首先去官网下载页面下载最新版本的Dokuwiki,根据自己需要动态打包,不需要安装:

9.3K40
来自专栏Hongten

网页上播放视频的免费的播放器_CKPlayer

今天在工作的过程中遇到一个功能:在网页中加入视频播放器,类似于我们经常看到的优酷,爱奇艺等视频网站的功能。

6.4K10
来自专栏Hongten

给你八分钟搞定dedeCMS(织梦内容管理系统)

织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历了二年多的发展,...

80720
来自专栏Hans362 's Lab

IIS环境下为Typecho配置伪静态

Typecho是一款轻量级的基于PHP的博客程序,界面简洁,简单明了,而且它还可以使用内置的固定链接功能让博客看上去像静态页面。

48230
来自专栏大愚Talk

Dockerfile 与 Compose 环境搭建学习笔记(二)

上一篇文章对整体结构进行了简单记录,这一篇介绍下关于Dockerfile自定义镜像以及各个服务的配置。

20120
来自专栏大愚Talk

Dockerfile 与 Compose 环境搭建学习笔记(一)

以前一直使用 Vagrant 作为自己的开发环境,并且在上家公司也推行大家采用 Vagrant 作为开发环境,保障公司使用的是同一套开发环境。随着docker的...

10810
来自专栏Hongten

python开发_python概述

Python(KK 英语发音:/ˈpaɪθən/,是一种面向对象、直译式计算机程序设计语言,

16120
来自专栏Hongten

不使用 Ruby 的十个理由

请注意:这是一篇主观意识的文章。它的目的并不是要说服你使用或者不使用Ruby,或者其他任何技术。这篇文章所涉及到的环境是 Web 开发,而不是通用的编程。我想...

2.8K10
来自专栏云飞学编程

Python新手写爬虫!尝试动态加载的电影网站爬虫

昨天小编写了个抓取电影下载链接的小爬虫《新手也能做爬虫!一起来爬电影信息吧》,然后有网友推荐小编爬取某动态加载的电影网站,尽管能力有限,小编还是去尝试了一下,分...

62110
来自专栏Hongten

php开发_链接mysql数据库的一个类

10440

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励