docker 官方 php 镜像下安装后没有 mysqli gd 拓展

这篇博客讲述了如何在Docker官方的PHP 7.2-fpm镜像中手动安装mysqli和GD库。作者首先拉取了官方镜像并创建了容器,然后通过执行docker-php-ext-install命令来安装pdo_mysql, mysqli, gd等拓展。当遇到只有PNG支持的问题时,博主提供了重新编译以支持更多图像格式的解决办法。" 103123077,8705550,配置SAP Fiori My Inbox APP全攻略,"['SAP fiori', 'fiori配置', 'ABAP工作流']

官方镜像地址

https://hub.docker.com/_/php?tab=description&page=1&ordering=last_updated&name=7.2-fpm

我采用的是7.2-fpm tag

更新镜像并且创建php容器

docker search php

docker pull php

docker run --name phpfpm -d -v /data:/data php:7.2-fpm

进入容器更新gd mysqli 库

$ docker exec -it php /bin/bash

$ cd /usr/local/bin  

$ ./docker-php-ext-install pdo_mysql mysqli mysql gd libzip-dev zip   pdo_mysql mysqli gd zip bcmath

$ docker restart php

ps:

if custom ./configure arguments are necessary, see docker-php-ext-configure

Possible values for ext-name:

bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mcrypt mssql mysql mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets spl standard sybase_ct sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zip

apt-get update && \
    apt-get install -y libmcrypt-dev

// 安装 gd 拓展

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

// 自定义 images

Dockerfile

FROM php:5.6-fpm

RUN apt-get update && \
apt-get install -y --no-install-recommends \
libssl-dev 


# install the mongodb extension
RUN pecl install mongo-1.6.1 && \
docker-php-ext-enable mongo

Dockerfile

FROM php:5.6-fpm

RUN apt-get update && \
apt-get install -y --no-install-recommends \
libssl-dev 


# install the mongodb extension
RUN pecl install mongodb-1.4.4 && \
docker-php-ext-enable mongodb
FROM php:7.1-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

ps:

https://blog.aikamino.cn/a/1019.html

gd库安装步骤

在容器内使用docker-php-ext-install gd安装gd,使用过程中一些程序报错Call to undefined function imagettftext()。在phpinfo中发现它只支持png,所以需要重新编译。

本文使用的docker镜像为php:7.1-fpm

操作步骤

首先主机中执行docker exec -it <容器名 or id> /bin/bash进入容器的命令行。

#主机中
#如果之前启用了gd,需要先在php.ini文件中注释掉extension=gd.so并重启容器
docker exec -it <容器ID或容器名称> /bin/bash    #进入php容器
#容器中
echo "deb http://mirrors.163.com/debian/ stretch main contrib non-free\ndeb http://mirrors.163.com/debian/ stretch-updates main contrib non-free\ndeb http://mirrors.163.com/debian/ stretch-backports main contrib non-free" > /etc/apt/sources.list  #软件源修改为网易镜像站源
apt update  #更新软件源
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev #安装各种库
docker-php-source extract #解压源码
cd /usr/src/php/ext/gd  #gd源码文件夹
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2   #准备编译
docker-php-ext-install gd   #编译安装
php -m | grep gd
#重启容器

如果没有出现错误,那么gd应该已经支持jpeg等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值