Dockerfile 构建 php8

官方的 php8 镜像基本满足开发需要,但有时却缺扩展,有两种选择,一是在容器内部去安装,二是在原来的基础上重新构建镜像。

基于 php:8.0-fpm-buster 来说,原镜像自带了几个官方的 shll 脚本,地址: https://github.com/docker-library/php/tree/deb4a80b409c21ecdd2b884142fab51b48a9b3cb/8.0/buster/fpm

docker-php-ext-configure :配置安装参数,即生成 ./configure --enable-php-fpm 之类的

docker-php-ext-install :从源码包安装扩展

docker-php-ext-enable :开启扩展,即配置写入 php.ini

docker-php-entrypoint :这个是进入点,大概意思是,如果启动镜像时,如:docker run --name test -d php:8.0 cmd 如果最后的 cmd 是以 “-” 开头则表示它只是作为 php-fpm 的一个参数,运行 php-fpm cmd,否则运行 cmd

下面 php 安装扩展的几种方式,根据需要选择。

复制代码
FROM php:8.0-fpm-buster

#编译安装核心扩展
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd

#pecl 安装扩展
RUN pecl install redis-5.3.2 \
    && pecl install xdebug-2.8.1 \
    && docker-php-ext-enable redis xdebug


#从源码包安装扩展
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
    && mkdir -p /tmp/xcache \
    && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \
    && rm xcache.tar.gz \
    && docker-php-ext-configure /tmp/xcache --enable-xcache \
    && docker-php-ext-install /tmp/xcache \
    && rm -r /tmp/xcache
复制代码

 

我的 Dockerfile 如下:

复制代码
FROM php:8.0-fpm-buster

#更换源
RUN    sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list 

#编译安装核心扩展 gd
RUN apt-get update &&\
    apt-get install -y     libfreetype6-dev libjpeg62-turbo-dev libpng-dev &&\
    docker-php-ext-configure gd --with-freetype --with-jpeg &&\
    docker-php-ext-install -j$(nproc) gd

#pecl 安装扩展 redis
RUN pecl install redis-5.3.2 \
    && docker-php-ext-enable redis
复制代码

进行到 Dockerfile 目录,执行  docker build -t zbseoag/php:8.0 . 就可以了。运行容器之后,进入容器,php -m 查看一下扩展有没有装成功。

 
posted @   心随所遇  阅读(2753)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2013-12-21 PHPExcel 类
点击右上角即可分享
微信分享提示