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 查看一下擴展有沒有裝成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM