php的官方镜像分为三个分支:下面我都是以 fpm 分支为基础镜像

  • cli :没有开启CGI,也就是不能运行fpm,只能运行命令行。

  • fpm :开启了CGI,可以用来运行web服务也可以运行cli命令。

  • zts :开启了线程安全的版本。

7.4 简单安装扩展版

  • php:7.4-fpm/v1.4
FROM php:7.4-fpm

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
    org.opencontainers.image.url="https://www.shuxiaoyuan.com" \
    org.opencontainers.image.documentation="https://book.shuxiaoyuan.com/show/3" \
    org.opencontainers.image.version="v1.4" \
    org.opencontainers.image.description="基于官方 php:7.4-fpm 镜像,制作个人开发的 php 7.4 环境,本次版本v1.4,主要新增如下功能:安装扩展pdo_mysql;bcmath;gd;zip;redis、安装git、安装composer"


WORKDIR /www

RUN set -eux \
    && apt-get update \
    && apt-get install -y git \
    && apt-get install -y zlib1g-dev \
    && apt-get install -y libzip-dev \
    && apt-get install -y libpng-dev \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install zip \
    && docker-php-ext-install bcmath \
    && docker-php-ext-install gd \
    && pecl install -o -f redis \
    && docker-php-ext-enable redis\
    && rm -rf /tmp/pear \
    && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
    && php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
    && php composer-setup.php \
    && mv composer.phar /usr/local/bin/composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer \
    && rm -rf composer-setup.php

编译:docker build -f /root/dockerfile/php74_v1.4 -t shuxiaoyuan/php74:v1.4 .

运行:docker run --name php74 -d shuxiaoyuan/php74:v1.4 进入容器,检查软件和扩展是否都安装成功 安装完成后的扩展如下:

bcmath、Core、ctype、curl、date、dom、fileinfo、filter、ftp、gd、hash、iconv、json、libxml、mbstring、mysqlnd、openssl、pcre、PDO、pdo_mysql、pdo_sqlite、Phar、posix、readline、redis、Reflection、session、SimpleXML、sodium、SPL、sqlite3、standard、tokenizer、xml、xmlreader、xmlwriter、zip、zlib

登录:docker login -u shuxiaoyuan 上传:docker push shuxiaoyuan/php74:v1.4

shuxiaoyuan/php74 安装 crontab + vim

FROM shuxiaoyuan/php74:v1.4

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.url="https://www.shuxiaoyuan.com" \
      org.opencontainers.image.documentation="https://book.shuxiaoyuan.com/show/3" \
      org.opencontainers.image.version="v1.5" \
      org.opencontainers.image.description="基于官方 php:7.4-fpm 镜像,制作个人开发的 php 7.4 环境,本次版本v1.5,主要新增如下功能:安装crontab、vim"

RUN set -eux \
    && apt-get update  \
    && apt-get install vim -y \
    && apt-get install cron -y \
    && service cron start \
    && echo "alias ls='ls --color=auto'" >> /root/.bashrc \
    && echo "alias ll='ls --color=auto -la'" >> /root/.bashrc

编译、运行、测试、上传

测试 crontab 是否正常工作

# 编写一个简单的demo,就是将123 输出到一个指定的文件中
* * * * * echo "123" >> /www/php_demo/storage/logs/crontab.log

注意:在 docker 容器中,php-fpm 的运行用户是 www-data,php要带全路径

crontab -e -uwww-data

* * * * * cd /www/php_demo && /usr/local/bin/php artisan schedule:run >> /www/php_demo/storage/logs/crontab-www-data.log

php8.0 简单扩展版

php:8.0.28-fpm

FROM php:8.0.28-fpm

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.url="https://www.shuxiaoyuan.com" \
      org.opencontainers.image.documentation="https://book.shuxiaoyuan.com/show/3" \
      org.opencontainers.image.version="v2" \
      org.opencontainers.image.description="基于官方 php:8.0.28-fpm 镜像,制作个人开发的 php 8.0 环境,本次版本v2,主要新增如下功能:安装扩展pdo_mysql;bcmath;gd;zip;redis、安装git、安装composer"

WORKDIR /www

RUN set -eux \
    && apt-get update \
    && apt-get install -y git \
    && apt-get install -y zlib1g-dev \
    && apt-get install -y libzip-dev \
    && apt-get install -y libpng-dev \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install zip \
    && docker-php-ext-install bcmath \
    && docker-php-ext-install gd \
    && pecl install -o -f redis \
    && rm -rf /tmp/pear \
    && docker-php-ext-enable redis\
    && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
    && php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
    && php composer-setup.php \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer \
    && mv composer.phar /usr/local/bin/composer

编译:docker build -f /root/dockerfile/php8.0.28_v2 -t shuxiaoyuan/php:8.0.28.v2 .

运行、进入容器、查看扩展和软件,安装后的扩展列表

bcmath、Core、ctype、curl、date、dom、fileinfo、filter、ftp、gd、hash、iconv、json、libxml、mbstring、mysqlnd、openssl、pcre、PDO、pdo_mysql、pdo_sqlite、Phar、posix、readline、redis、Reflection、session、SimpleXML、sodium、SPL、sqlite3、standard、tokenizer、xml、xmlreader、xmlwriter、zip、zlib

8.0.2 添加其他

FROM shuxiaoyuan/php:8.0.28.v1

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v3" \
      org.opencontainers.image.description="要新增如下功能:安装 vim 和 crontab"

WORKDIR /www

RUN set -eux \
    && apt-get update  \
    && apt-get install vim -y \
    && apt-get install cron -y \
    && service cron start \
    && echo "alias ls='ls --color=auto'" >> /root/.bashrc \
    && echo "alias ll='ls --color=auto -la'" >> /root/.bashrc