PHP

php:8.0.28-fpm

v0.01 初始化

安装软件:Vim Cron Composer

安装扩展:

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
xlswriter
xml
xmlreader
xmlwriter
zip
zlib

DockerFile文件:php_8.0.28.v0.01

FROM php:8.0.28-fpm

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v0.0.1" \
      org.opencontainers.image.description="第一个基础测试版本,安装软件有:vim,cron,composer、安装的扩展有:"

WORKDIR /www

# 构建 xlswriter 扩展,根据自身需要替换版本号
ENV XLSWRITER_VERSION 1.5.1

RUN set -eux \
    && apt-get update \
    && apt-get install -y vim \
    && apt-get install -y cron \
    && 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 \
    && pecl install -o -f xlswriter \
    && docker-php-ext-enable redis\
    && docker-php-ext-enable xlswriter\
    && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
    && cd /root \

    # 编译安装 xlswriter
    # && curl -fsSL "https://pecl.php.net/get/xlswriter-${XLSWRITER_VERSION}.tgz" -o xlswriter.tgz \
    # && mkdir -p /tmp/xlswriter \
    # && tar -xf xlswriter.tgz -C /tmp/xlswriter --strip-components=1 \
    # && rm xlswriter.tgz \
    # && cd /tmp/xlswriter \
    # && phpize \
    # && ./configure --enable-reader \
    # && make \
    # && make install

    && 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 \
    && service cron start \

    && rm -rf /tmp/pear \
    && service cron start \
    && echo "alias ls='ls --color=auto'" >> /root/.bashrc \
    && echo "alias ll='ls --color=auto -la'" >> /root/.bashrc

# 编译安装后不会自动加载,需要配置到 php.ini 文件里面
# RUN echo "extension=xlswriter.so" > /usr/local/etc/php/php.ini

编译 DockerFile 文件 docker build -f .\php_8.0.28.v0.0.1 -t shuxiaoyuan/php:8.0.28.v0.01 .

运行容器,查看个软件和扩展是否安装成功: docker run --name test -d shuxiaoyuan/php:8.0.28.v0.01

v0.02 添加 mcrypt 扩展

添加扩展:mcrypt

DockerFile文件:php_8.0.28.v0.02

FROM shuxiaoyuan/php:8.0.28.v0.01

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v0.0.2" \
      org.opencontainers.image.description="添加 mcrypt 扩展"

WORKDIR /www

RUN set -eux \
    && apt-get update \
    && apt-get install -y libmcrypt-dev \
    && pecl install mcrypt \
    && docker-php-ext-enable mcrypt

编译 DockerFile 文件

docker build -f .\php_8.0.28.v0.02 -t shuxiaoyuan/php:8.0.28.v0.02 .

安装后的扩展列表

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

[Zend Modules]

php:8.1-fpm

v1

FROM php:8.1-fpm

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v1" \
      org.opencontainers.image.description="第一个基础版本"

WORKDIR /www

RUN set -eux \
    && apt-get update \
    && apt-get install -y zlib1g-dev \
    && apt-get install -y libzip-dev \
    && apt-get install -y libpng-dev \
    && apt-get install -y libmcrypt-dev \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install zip \
    && docker-php-ext-install bcmath \
    && docker-php-ext-install gd \
    && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
    && echo "alias ls='ls --color=auto'" >> /root/.bashrc \
    && echo "alias ll='ls --color=auto -la'" >> /root/.bashrc


# 安装 vim
RUN apt-get install -y vim


# 安装 cron
RUN apt-get install -y cron \
&& service cron start


# 安装 Redis
RUN pecl install -o -f redis \
&& docker-php-ext-enable redis


# 安装 mcrypt
RUN pecl install -o -f mcrypt \
&& docker-php-ext-enable mcrypt


# 安装 xlswriter
RUN pecl install -o -f xlswriter \
&& docker-php-ext-enable xlswriter


# 安装 composer
RUN 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


# 清理临时文件
RUN rm -rf /tmp/pear

v2: 安装 pdo_pgsql 扩展

FROM shuxiaoyuan/php:8.1.v1

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v2" \
      org.opencontainers.image.description="添加 pgsql"

WORKDIR /www

# 安装PostgreSQL客户端库
RUN apt-get update \
&& apt-get install -y libpq-dev


# 安装PHP的PDO PostgreSQL扩展
RUN docker-php-ext-install pdo_pgsql


# 清理临时文件
RUN rm -rf /tmp/pear

v3: 安装 wkhtmltopdf

FROM shuxiaoyuan/php:8.1.v2

LABEL org.opencontainers.image.authors="Xiaoyuan Shu <sxy@shuxiaoyuan.com>;<shuxiaoyuan520@gmail.com>" \
      org.opencontainers.image.version="v3" \
      org.opencontainers.image.description="安装 wkhtmltoxpdf"

WORKDIR /www

# 安装 wkhtmltopdf
# 安装路径: /usr/bin/wkhtmltopdf /usr/bin/wkhtmltoimage
RUN set -eux \
    && apt-get update \
    && apt-get install -y wkhtmltopdf \
    && apt-get install -y wget

# 安装中文字体
RUN cd /usr/share/fonts \
    && wget https://beego-gz-study-1252088954.cos.ap-guangzhou.myqcloud.com/test/simsun.ttc

# 清理临时文件
RUN rm -rf /tmp/pear