Dockerfile
FROM php:8.2.3-fpm
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN set -eux \
&& ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone \
&& cp /etc/apt/sources.list /etc/apt/sources.list.bak \
&& sed -i "s/http:\/\/deb.debian.org/http:\/\/mirrors.tencent.com/g" /etc/apt/sources.list \
&& apt-get update \
&& apt install -y libpq-dev && docker-php-ext-install pgsql \
&& apt install -y libpng-dev libwebp-dev libjpeg-dev libfreetype-dev \
&& docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype && docker-php-ext-install gd \
&& apt install -y libmagick++-dev \
&& pecl install -D 'with-imagick="autodetect"' imagick && docker-php-ext-enable imagick \
&& apt install -y libc-client2007e-dev libkrb5-dev \
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap \
&& docker-php-ext-install mysqli \
&& apt install -y libzip-dev && docker-php-ext-install zip \
&& docker-php-ext-install bcmath \
&& apt install -y libxml2-dev && docker-php-ext-install soap \
&& apt install -y libicu-dev && docker-php-ext-install intl \
&& apt install -y libldap-dev && docker-php-ext-install ldap \
&& pecl install msgpack && docker-php-ext-enable msgpack \
&& pecl install igbinary && docker-php-ext-enable igbinary \
&& apt install -y libzstd-dev \
&& pecl install -D 'enable-redis-igbinary="yes" enable-redis-msgpack="yes" enable-redis-lzf="yes" enable-redis-zstd="yes"' redis && docker-php-ext-enable redis \
&& docker-php-ext-install sockets \
&& apt install -y libssl-dev libcurl4-openssl-dev libc-ares-dev \
&& pecl install -D 'enable-brotli="yes" enable-sockets="yes" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="yes" enable-swoole-curl="yes" enable-cares="yes"' swoole && docker-php-ext-enable swoole \
&& pecl install pcov && docker-php-ext-enable pcov \
&& pecl install xdebug && docker-php-ext-enable xdebug \
&& docker-php-ext-install opcache \
&& apt install -y unzip git \
&& curl https://mirrors.tencent.com/composer/composer.phar > /usr/local/bin/composer && chmod +x /usr/local/bin/composer && composer config -g repos.packagist composer https://mirrors.tencent.com/composer/ && composer \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
手动定制
# 基于 php:8.2.3-fpm 开始定制
docker run --it php:8.2.3-fpm /bin/bash
# 时区设置
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 设置apt国内镜像源 - 腾讯镜像源
cp /etc/apt/sources.list /etc/apt/sources.list.bak \
&& sed -i "s/http:\/\/deb.debian.org/http:\/\/mirrors.tencent.com/g" /etc/apt/sources.list \
&& apt-get update
# 安装PHP扩展 - 可以参考下面扩展附录
apt install -y libpq-dev && docker-php-ext-install pgsql \
&& apt install -y libpng-dev libwebp-dev libjpeg-dev libfreetype-dev \
&& docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype && docker-php-ext-install gd \
&& apt install -y libmagick++-dev \
&& pecl install -D 'with-imagick="autodetect"' imagick && docker-php-ext-enable imagick \
&& apt install -y libc-client2007e-dev libkrb5-dev \
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap \
&& docker-php-ext-install mysqli \
&& apt install -y libzip-dev && docker-php-ext-install zip \
&& docker-php-ext-install bcmath \
&& apt install -y libxml2-dev && docker-php-ext-install soap \
&& apt install -y libicu-dev && docker-php-ext-install intl \
&& apt install -y libldap-dev && docker-php-ext-install ldap \
&& pecl install msgpack && docker-php-ext-enable msgpack \
&& pecl install igbinary && docker-php-ext-enable igbinary \
&& apt install -y libzstd-dev \
&& pecl install -D 'enable-redis-igbinary="yes" enable-redis-msgpack="yes" enable-redis-lzf="yes" enable-redis-zstd="yes"' redis && docker-php-ext-enable redis \
&& docker-php-ext-install sockets \
&& apt install -y libssl-dev libcurl4-openssl-dev libc-ares-dev \
&& pecl install -D 'enable-brotli="yes" enable-sockets="yes" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="yes" enable-swoole-curl="yes" enable-cares="yes"' swoole && docker-php-ext-enable swoole \
&& pecl install pcov && docker-php-ext-enable pcov \
&& pecl install xdebug && docker-php-ext-enable xdebug \
&& docker-php-ext-install opcache
# 安装 Composer
apt install -y unzip \
&& curl https://mirrors.tencent.com/composer/composer.phar > /usr/local/bin/composer && chmod +x /usr/local/bin/composer && composer config -g repos.packagist composer https://mirrors.tencent.com/composer/ && composer
# 清理垃圾文件
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
发布提交
# 没有登录的话,需要登录
# docker login -u asgeg@qq.com -p
# 提交成本地镜像
docker commit 容器id iguoji/phpfpm
# 将本地镜像推送到DockerHub
docker push iguoji/phpfpm:8.2.3
扩展附录
-
一键版
\ && php -m
-
pgsql
apt install -y libpq-dev && docker-php-ext-install pgsql && php --ri pgsql
-
sqlite3 -
gd
apt-get install -y libpng-dev libwebp-dev libjpeg-dev libfreetype-dev \ && docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype && docker-php-ext-install gd \ && php --ri gd
-
imagick
apt install -y libmagick++-dev \ && pecl install -D 'with-imagick="autodetect"' imagick && docker-php-ext-enable imagick && php --ri imagick
-
curl -
imap
apt install -y libc-client2007e-dev libkrb5-dev \ && docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install imap && php --ri imap
-
mysql -
mysqli
docker-php-ext-install mysqli && php --ri mysqli
-
mbstring -
xml -
zip
apt install -y libzip-dev && docker-php-ext-install zip && php --ri zip
-
bcmath
docker-php-ext-install bcmath && php --ri bcmath
-
soap
apt install -y libxml2-dev && docker-php-ext-install soap && php --ri soap
-
intl
apt install -y libicu-dev && docker-php-ext-install intl && php --ri intl
-
readline -
ldap
apt install -y libldap-dev && docker-php-ext-install ldap && php --ri ldap
-
msgpack
pecl install msgpack && docker-php-ext-enable msgpack && php --ri msgpack
-
igbinary
pecl install igbinary && docker-php-ext-enable igbinary && php --ri igbinary
-
redis
pecl install igbinary && docker-php-ext-enable igbinary \ && apt install -y libzstd-dev \ && pecl install -D 'enable-redis-igbinary="yes" enable-redis-msgpack="yes" enable-redis-lzf="yes" enable-redis-zstd="yes"' redis && docker-php-ext-enable redis && php --ri redis
-
swoole
docker-php-ext-install sockets \ && apt install -y libssl-dev libcurl4-openssl-dev libc-ares-dev \ && pecl install -D 'enable-brotli="yes" enable-sockets="yes" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="yes" enable-swoole-curl="yes" enable-cares="yes"' swoole && docker-php-ext-enable swoole && php --ri swoole
-
pcov
pecl install pcov && docker-php-ext-enable pcov && php --ri pcov
-
xdebug
pecl install xdebug && docker-php-ext-enable xdebug && php --ri xdebug
-
opcache
docker-php-ext-install opcache && php --ri opcache