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