
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
PHP开发专用Docker镜像,支持PHP 5.3-8.3版本和NodeJS 18/20/22版本,提供CLI、FPM、NGINX和Apache等多种运行环境,集成了开发所需的各种工具和扩展,旨在为PHP应用开发提供一致、便捷的开发环境。
可将镜像标签中的"virtuasa/"替换为"registry.smile.fr/smile-suisse/"以使用Smile仓库
virtuasa/php-dev:bookworm-sury
基于Debian的基础镜像,包含基础工具。
标签格式: virtuasa/php-dev:${PHP_VERSION}-${TYPE}-bookworm-sury
支持的PHP版本: 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3
CLI镜像
用于PHP命令行环境
virtuasa/php-dev:${PHP_VERSION}-cli-bookworm-suryvirtuasa/php-dev:8.3-cli-bookworm-suryFPM镜像
包含PHP CLI和FPM服务
virtuasa/php-dev:${PHP_VERSION}-fpm-bookworm-suryvirtuasa/php-dev:8.3-fpm-bookworm-suryNGINX镜像
包含PHP CLI和NGINX网站服务
virtuasa/php-dev:${PHP_VERSION}-nginx-bookworm-suryvirtuasa/php-dev:8.3-nginx-bookworm-suryApache镜像
包含PHP CLI和Apache网站服务
virtuasa/php-dev:${PHP_VERSION}-apache-bookworm-suryvirtuasa/php-dev:8.3-apache-bookworm-sury标签格式: virtuasa/php-dev:${PHP_VERSION}-${TYPE}-node-${NODE_VERSION}-bookworm-sury
支持的NodeJS版本: 18, 20, 22
CLI镜像(带NodeJS)
用于PHP命令行环境,包含NodeJS工具
virtuasa/php-dev:${PHP_VERSION}-cli-node-${NODE_VERSION}-bookworm-suryvirtuasa/php-dev:8.3-cli-node-22-bookworm-suryFPM镜像(带NodeJS)
包含PHP CLI、FPM服务和NodeJS工具
virtuasa/php-dev:${PHP_VERSION}-fpm-node-${NODE_VERSION}-bookworm-suryvirtuasa/php-dev:8.3-fpm-node-22-bookworm-suryNGINX镜像(带NodeJS)
包含PHP CLI、NGINX网站服务和NodeJS工具
virtuasa/php-dev:${PHP_VERSION}-nginx-node-${NODE_VERSION}-bookworm-suryvirtuasa/php-dev:8.3-nginx-node-22-bookworm-suryApache镜像(带NodeJS)
包含PHP CLI、Apache网站服务和NodeJS工具
virtuasa/php-dev:${PHP_VERSION}-apache-node-${NODE_VERSION}-bookworm-suryvirtuasa/php-dev:8.3-apache-node-22-bookworm-sury| 组件 | 支持版本 | 说明 |
|---|---|---|
| PHP | 5.6-8.3 | 核心PHP运行环境 |
| XDebug | 全版本 | PHP调试工具 |
| blackfire | 全版本 | PHP性能分析工具 |
| composer | 全版本 | PHP依赖管理工具 |
| https://github.com/fabpot/local-php-security-checker/ | 全版本 | PHP安全检查工具 |
| phive | 7.3+ | PHP归档管理工具 |
| Apache | 全版本 | Web服务器 |
| NGINX | 全版本 | Web服务器 |
| MSMTP | 全版本 | SMTP客户端 |
| NodeJs & npm | 18/20/22 | JavaScript运行时和包管理器(特定版本) |
| Yarn | 特定版本 | JavaScript包管理器 |
| Debian | bookworm | 基础操作系统 |
使用Docker Run运行
bash# PHP CLI示例 docker run --rm -v $(pwd):/data virtuasa/php-dev:8.3-cli-bookworm-sury php -v # Apache示例 docker run -d -p 8080:80 -v $(pwd):/data virtuasa/php-dev:8.3-apache-bookworm-sury
Docker Compose示例
yamlversion: '3.9' services: web: image: virtuasa/php-dev:8.3-nginx-node-22-bookworm-sury user: ${FIXUID:-1000}:${FIXGID:-1000} volumes: - .:/data ports: - "8080:80" - "443:443" environment: - HISTFILE=/data/var/.docker_bash_history - HISTFILESIZE=1000 - DOCUMENT_ROOT=public - SSL_FORCE=yes - SERVER_NAMES=app.docker.local - XDEBUG_CLIENT_HOST=host.docker.internal extra_hosts: - 'host.docker.internal:host-gateway'
基础镜像变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
HOSTNAME_LOCAL_ALIAS | `` | 解析到127.0.0.1的主机名别名列表,用逗号分隔 |
FIXUID | 1000 | Docker用户UID,应设置为开发者的UID |
FIXGID | 1000 | Docker用户GID,应设置为开发者的GID |
DOCKER_TIMEZONE | Europe/Zurich | Docker容器时区 |
LANG | C.UTF-8 | 系统 locale |
SMTP_MAILHUB | smtp.docker:25 | 邮件发送主机,格式为host[:port],默认端口25 |
SMTP_AUTH_USER | | SMTP认证用户名,为空则不使用SMTP认证 |
SMTP_AUTH_PASS | | SMTP认证密码 |
SMTP_SENDER_HOSTNAME | | 发件人主机全名,未指定则查询主机名 |
DOCKER_CUSTOM_INIT | | 容器创建时执行的初始化脚本 |
DOCKER_COPY_DIR_TO_ETC | | 复制目录内容到/etc,并处理*.j2文件 |
DOCKER_COPY_DIR_TO_BIN | | 复制目录内容到/user/local/bin |
DOCKER_MKDIR | | 使用mkdir -p创建指定目录 |
PHP镜像变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
WRITABLE_PATH | var | Apache或Nginx可写文件夹列表,空格分隔 |
VAR_DIR | var | 应用程序日志存储目录 |
XDEBUG_MAIN_HOST | localhost | CLI调试的XDEBUG主主机 |
XDEBUG_DISABLE | | 设置为"yes"禁用XDEBUG |
XDEBUG_CLIENT_HOST | | XDEBUG客户端主机,建议值host.docker.internal |
BLACKFIRE_CLIENT_ID | | Blackfire客户端ID |
BLACKFIRE_CLIENT_TOKEN | | Blackfire客户端Token |
BLACKFIRE_SERVER_ID | | Blackfire服务器ID |
BLACKFIRE_SERVER_TOKEN | | Blackfire服务器Token |
MOUNT_DIR | /data | 容器内Docker挂载路径 |
PHP_MEMORY_LIMIT | 512M | PHP脚本最大内存限制 |
ACL_ENABLE | | 设置为"yes"在容器启动时执行setfacl |
PHP Apache变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
DOCUMENT_ROOT | public | Apache文档根目录路径,为空则使用项目根目录 |
SERVER_NAMES | `` | 服务器名称和别名,逗号分隔 |
SSL_CERT_KEY | /etc/ssl/private/ssl-cert-snakeoil.key | Apache SSL私钥路径 |
SSL_CERT_PEM | /etc/ssl/certs/ssl-cert-snakeoil.pem | Apache SSL证书路径 |
SSL_CERT_CA | `` | SSL证书链,PEM编码的CA证书 |
SSL_FORCE | `` | 设置为"yes"强制HTTP重定向到HTTPS |
PHP Nginx变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
DOCUMENT_ROOT | public | Nginx文档根目录路径,为空则使用项目根目录 |
SERVER_NAMES | `` | Nginx服务器名称,逗号分隔 |
SSL_CERT_KEY | /etc/ssl/private/ssl-cert-snakeoil.key | Nginx SSL私钥路径 |
SSL_CERT_PEM | /etc/ssl/certs/ssl-cert-snakeoil.pem | Nginx SSL证书和证书链路径 |
SSL_FORCE | `` | 设置为"yes"强制HTTP重定向到HTTPS |
注意:
- 带*的路径是相对于Docker容器挂载路径,即项目根目录
- 带**的路径是Docker容器内的绝对路径,如果需要,不要忘记添加/data挂载路径
如果主机Linux用户ID不是1000(可通过id命令检查),请将全局变量设置为您的会话ID:
bashprintf "FIXUID=`id -u`\nFIXGID=`id -g`" >> ~/.profile
使用docker-compose文件时,为容器设置user参数:
yamluser: ${FIXUID:-1000}:${FIXGID:-1000}
要使用Blackfire.io分析PHP脚本,需要在官网创建个人账户。
在计算机上定义以下环境变量,从blackfire.io设置/凭据获取值:
bashBLACKFIRE_CLIENT_ID="<Client ID>" BLACKFIRE_CLIENT_TOKEN="<Client Token>" BLACKFIRE_SERVER_ID="<Server ID>" BLACKFIRE_SERVER_TOKEN="<Server Token>"
可将这些值放入~/.profile文件中,以便计算机重启后保留这些信息。无需重启计算机,只需导出变量并执行docker up。
分析方法:
blackfire run <php命令>| 命令 | 描述 |
|---|---|
xdebug-disable | 完全禁用XDebug,提高性能(HTTP和CLI) |
xdebug-disable-autostart | 禁用每次HTTP调用时XDebug自动启动 |
xdebug-enable | 完全启用XDebug,用于调试(HTTP和CLI) |
xdebug-enable-autostart | 启用每次HTTP调用时XDebug自动启动 |
php-xdebug <php脚本和参数> | 使用XDebug运行PHP CLI命令 |
php-no-xdebug <php脚本和参数> | 不使用XDebug运行PHP CLI命令 |
php-profile <php脚本和参数> | 运行带性能分析的PHP CLI命令,生成分析文件 |
docker-php-ext-disable ext-name [ext-name ...] | 禁用PHP扩展 |
docker-php-ext-enable ext-name [ext-name ...] | 启用PHP扩展 |
docker-php-ext-install ext-name [ext-name ...] | 安装PHP扩展 |
blackfire-disable | 禁用Blackfire.io模块和代理 |
blackfire-enable | 启用Blackfire.io模块和代理(自动禁用xdebug) |
blackfire run <php脚本和参数> | 运行带Blackfire.io分析的CLI脚本(需先启用Blackfire) |
local-php-security-checker | 运行PHP安全检查工具 |
composer | PHP依赖管理工具 |
使用make help查看构建目标。
示例:
make all 构建所有镜像make all-php 构建所有PHP镜像make base php-8.3 php-8.3-node-18 构建特定版本镜像您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务