本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

latest, 3, 3.22, 3.22.1-1 (Dockerfile)3.21, 3.21.4 (Dockerfile)3.20, 3.20.7 (Dockerfile)注意:
main分支(Dockerfile)会自动推送到标签**beta**。
在稳定版本发布前,可使用此标签进行测试。
启动Docker容器:
docker run -p 80:8080 erseco/alpine-php-webserver
在http://localhost查看PHP信息,或在http://localhost/test.html查看静态HTML页面。
或挂载本地代码以通过PHP-FPM & Nginx提供服务:
docker run -p 80:8080 -v ~/我的代码库:/var/www/html erseco/alpine-php-webserver
通过Docker Compose轻松提供本地PHP文件服务。此配置将本地./php目录挂载到容器,并绑定到本地8080端口,使PHP文件的更改能通过Web服务器即时反映,非常适合本地开发和测试。
以下是简单的docker-compose.yml示例:
services: webserver: image: erseco/alpine-php-webserver ports: - 8080:8080 volumes: - ./php:/var/www/html restart: unless-stopped
erseco/alpine-php-webserver,针对PHP应用优化。http://localhost:8080访问。./php目录挂载到容器/var/www/html,实现PHP文件实时更新。docker-compose.yml文件。docker compose up -d。http://localhost:8080访问PHP应用。此方法确保无缝的开发流程,让你专注于编码而非环境配置。
可通过创建runit条目添加额外守护进程(如自定义应用)。只需编写一个运行守护进程的小型shell脚本(命名为run,需可执行),并放置在/etc/service/<名称>目录下。runit会自动管理该进程,在崩溃时重启等。
以下示例展示如何创建memcached服务器的runit条目:
#!/bin/sh ### 在memcached.sh中(确保文件权限为chmod +x): # `chpst -u memcache`以用户`memcache`运行命令。 # 若省略此部分,命令将以root用户运行。 exec 2>&1 chpst -u memcache /usr/bin/memcached ### 在Dockerfile中: RUN mkdir /etc/service/memcached ADD memcached.sh /etc/service/memcached/run
注意:shell脚本必须不后台运行/不fork守护进程。通常守护进程会提供命令行参数或配置选项实现此功能。
可在容器启动时运行自定义脚本,只需将脚本添加到/docker-entrypoint-init.d/目录。脚本按字典序执行,且必须正常退出(如退出码0),若任一脚本退出码非零,启动将失败。
以下示例添加一个启动脚本,将启动时间记录到/tmp/boottime.txt:
#!/bin/sh ### 在logtime.sh中(确保文件权限为chmod +x): date > /tmp/boottime.txt ### 在Dockerfile中: ADD logtime.sh /docker-entrypoint-init.d/logtime.sh
Nginx配置设计灵活且易于自定义,默认主配置文件位于rootfs/etc/nginx/nginx.conf。
有两种方式添加自定义配置:
全局配置:将配置文件放置在/etc/nginx/conf.d/,全局生效,影响所有服务器块。
服务器特定配置:针对特定服务器块的配置,放置在/etc/nginx/server-conf.d/,仅在该服务器块内生效,实现更精细的控制。
要添加自定义配置,在相应目录创建.conf文件。例如,创建/etc/nginx/server-conf.d/custom-server.conf添加服务器特定规则:
# 示例自定义服务器配置 location /custom { return 200 '自定义服务器配置生效!'; add_header Content-Type text/plain; }
此设置允许无需修改主nginx.conf即可管理和自定义Nginx配置。在rootfs/etc/可找到Nginx、PHP和PHP-FPM的默认配置文件。若需扩展或自定义,可通过挂载配置文件实现:
Nginx配置:
docker run -v "`pwd`/nginx-server.conf:/etc/nginx/conf.d/server.conf" erseco/alpine-php-webserver
PHP配置:
docker run -v "`pwd`/php-setting.ini:/etc/php8/conf.d/settings.ini" erseco/alpine-php-webserver
PHP-FPM配置:
docker run -v "`pwd`/php-fpm-settings.conf:/etc/php8/php-fpm.d/server.conf" erseco/alpine-php-webserver
注意:由于
-v需要绝对路径,示例中使用pwd获取当前目录的绝对路径。
可通过以下环境变量修改NGINX和PHP的配置值:
| 服务 | 变量名 | 默认值 | 描述 |
|---|---|---|---|
| NGINX | nginx_root_directory | /var/www/html | 设置NGINX服务器根目录,指定文件提供位置,即Web应用公共文件存放目录。 |
| NGINX | client_max_body_size | 2m | 设置客户端请求体的最大允许大小,通过“Content-Length”请求头字段指定。 |
| NGINX | DISABLE_DEFAULT_LOCATION | false | 若设为"true",禁用Nginx配置中的默认location /块,可在/etc/nginx/server-conf.d/挂载自定义配置而无冲突。 |
| PHP8 | clear_env | no | 清除FPM工作进程环境变量,防止任意环境变量通过工作进程传递,仅保留配置中指定的变量。 |
| PHP8 | allow_url_fopen | On | 启用URL感知的fopen包装器,允许像访问文件一样访问URL对象,默认支持ftp、http协议,部分扩展(如zlib)可能注册额外包装器。 |
| PHP8 | allow_url_include | Off | 允许在include()、include_once()、require()、require_once()函数中使用URL感知的fopen包装器。 |
| PHP8 | display_errors | Off | 控制错误是否输出到屏幕,即是否对用户隐藏错误信息。 |
| PHP8 | file_uploads | On | 是否允许HTTP文件上传。 |
| PHP8 | max_execution_time | 0 | 脚本允许运行的最长时间(秒),防止不良脚本占用服务器资源,默认值为30。 |
| PHP8 | max_input_time | -1 | 脚本允许解析输入数据(如POST、GET、文件上传)的最长时间(秒)。 |
| PHP8 | max_input_vars | 1000 | 允许的请求输入变量最大数量,可用于防范涉及输入变量名哈希冲突的拒绝服务***。 |
| PHP8 | memory_limit | 128M | 脚本允许分配的最大内存量(字节),防止不良脚本耗尽服务器内存,设为-1表示无限制。 |
| PHP8 | post_max_size | 8M | POST数据的最大允许大小,影响文件上传,通常应大于upload_max_filesize,且memory_limit应大于post_max_size。 |
| PHP8 | upload_max_filesize | 2M | 上传文件的最大允许大小。 |
| PHP8 | zlib_output_compression | On | 是否透明压缩页面,若在php.ini或Apache配置中设为"On",当浏览器发送"Accept-Encoding: gzip"或"deflate"头时压缩页面。 |
| PHP8 | date_timezone | UTC | 设置PHP时区配置(date.timezone),接受标准PHP时区标识符(如'America/New_York'、'Europe/London'),详见PHP时区。 |
| PHP8 | intl_default_locale | en_US | 全局设置PHP区域设置(如php.ini中),接受有效的区域标识符(如en_US或de_DE),详见PHP区域设置。 |
若项目需要Composer,可通过以下方式添加:
FROM erseco/alpine-php-webserver:latest USER root # 从***镜像安装Composer RUN apk add --no-cache composer USER nobody # 运行composer install安装依赖 RUN composer install --optimize-autoloader --no-interaction --no-progress
若构建包含源代码且使用Composer管理依赖的镜像,建议在构建过程中安装依赖。虽然需要Composer(/usr/bin/composer)安装依赖,但生产环境镜像中无需保留,可在安装后卸载以减小镜像大小:
FROM erseco/alpine-php-webserver # 切换到root用户安装Composer USER root # 安装Composer及所需工具 RUN apk add --no-cache composer # 复制应用源代码 COPY ./ /var/www/html WORKDIR /var/www/html # 切换到非root用户运行Composer USER nobody # 安装PHP依赖(需composer.json) RUN composer install \ --no-dev \ --optimize-autoloader \ --no-interaction \ --no-progress # 可选:卸载Composer减小镜像大小 USER root RUN apk del composer USER nobody
此方式保持最终镜像简洁,减小体积,并减少生产环境中可能被滥用的工具。
某些情况下可能需要在容器中以root用户运行命令(如安装额外包),可使用docker compose exec配合--user root选项:
docker compose exec --user root alpine-php-webserver sh
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429