Docker 制作PHP镜像

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
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值