touch4it/php8Extended PHP 镜像是一款专为运行 PHP 应用程序定制的 Docker 镜像,基于官方 PHP 镜像扩展构建。该镜像支持多种环境组合(Web 服务器、PHP 模式及基础系统),提供灵活的配置选项,适用于 PHP 应用的开发、测试与生产部署场景。
镜像提供以下标签,对应不同的环境组合:
touch4it/php8:php8.1-apachetouch4it/php8:php8.2-apachetouch4it/php8:php8.3-apachetouch4it/php8:php8.1-fpm-apachetouch4it/php8:php8.2-fpm-apachetouch4it/php8:php8.3-fpm-apachetouch4it/php8:latest(默认,对应最新 PHP 版本的 Alpine+Nginx+PHP-FPM)touch4it/php8:php8.1-fpm-nginxtouch4it/php8:php8.1-fpm-nginx-dev(开发版)touch4it/php8:php8.2-fpm-nginxtouch4it/php8:php8.2-fpm-nginx-dev(开发版)touch4it/php8:php8.3-fpm-nginxtouch4it/php8:php8.3-fpm-nginx-dev(开发版)-dev)及生产构建方案,满足不同阶段需求。通过 docker-compose.yml 快速启动开发环境:
yamlwww: image: touch4it/php8:php8.2-fpm-nginx # 选择合适的标签 volumes: - ./app:/var/www/html/web # 挂载本地代码目录到容器 ports: - "80:80" # 映射端口(宿主机:容器) # 可选:添加数据库、缓存等关联服务 # depends_on: # - db # db: # image: mysql:8.0
启动命令:
bashdocker-compose up -d
挂载自定义配置文件(PHP、PHP-FPM、Nginx)以覆盖默认配置:
yamlwww: image: touch4it/php8:php8.2-fpm-nginx volumes: - ./app:/var/www/html/web # 应用代码 - ./php.ini:/usr/local/etc/php/conf.d/docker-vars.ini # PHP 自定义配置 - ./[***] # PHP-FPM 配置 - ./nginx.conf:/etc/nginx/nginx.conf # Nginx 主配置 - ./nginx.vh.default.conf:/etc/nginx/conf.d/default.conf # Nginx 虚拟主机配置 ports: - "80:80"
基于该镜像构建包含应用代码的生产镜像:
dockerfileFROM touch4it/php8:latest # 使用最新稳定版标签 ADD ./app /var/www/html # 复制应用代码到容器 # 可选:安装依赖、配置权限等 # RUN composer install --no-dev --optimize-autoloader
构建命令:
bashdocker build -t my-php-app:prod .
通过环境变量自定义 PHP 及服务器参数,无需修改配置文件:
| 环境变量 | 说明 | 默认值 | 适用范围 |
|---|---|---|---|
ADMIN_EMAIL | Apache 服务器错误页面中的管理员***(ServerAdmin 指令) | webmaster@localhost | Apache 镜像 |
PHP_TIME_ZONE | PHP 日期函数默认时区(对应 date.timezone) | Europe/London | 所有镜像 |
PHP_MEMORY_LIMIT | PHP 脚本内存限制(对应 memory_limit) | 256M | 所有镜像 |
PHP_UPLOAD_MAX_FILESIZE | 上传文件大小限制(对应 upload_max_filesize) | 32M | 所有镜像 |
PHP_POST_MAX_SIZE | POST 数据大小限制(对应 post_max_size) | 32M | 所有镜像 |
配置示例:
在 docker-compose.yml 中添加环境变量:
yamlwww: image: touch4it/php8:php8.3-apache environment: - PHP_TIME_ZONE=Asia/Shanghai - PHP_MEMORY_LIMIT=512M - ADMIN_EMAIL=*** # ... 其他配置
mod_rewrite:支持 URL 重写。mod_http2:支持 HTTP/2(Apache 2.4.26+ 镜像)。bcmath、exif、gd、gettext、intl、mbstring、opcache、pgsql、pdo、pdo_mysql、pdo_pgsql、zip。基于官方 PHP 镜像构建,可使用 docker-php-ext-install 命令安装扩展:
dockerfileFROM touch4it/php8:php8.3-fpm-nginx RUN docker-php-ext-install mysqli # 安装 mysqli 扩展
更多说明参考 官方 PHP 镜像文档。
通过挂载自定义 *.ini 文件到容器的 $PHP_INI_DIR/conf.d 目录(通常为 /usr/local/etc/php/conf.d):
yamlvolumes: - ./my-php.ini:/usr/local/etc/php/conf.d/my-php.ini
my-php.ini 内容示例:
iniupload_max_filesize = 64M post_max_size = 64M
.htaccess 文件不生效?.htaccess 是 Apache 配置文件,Nginx 镜像不支持。若需 URL 重写,需在 Nginx 配置文件(如 default.conf)中添加 rewrite 规则。
php:8.3-apache 对应官方版本)。touch4it/drupal-php-fpm-nginx([***]touch4it/php-nginx-symfony([***]manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务