
jakzal/phpqa本Docker镜像(jakzal/phpqa)是一个集成了多种PHP静态分析与代码质量工具的环境,旨在为PHP项目提供便捷、一致的代码质量检查解决方案。通过Docker容器化技术,用户无需在本地或服务器环境中手动安装和配置各类工具,即可快速进行代码静态分析、代码风格检查、漏洞检测等质量保障工作。该镜像广泛适用于本地开发、CI/CD流程及多项目统一质量标准场景。
包含多种主流PHP代码质量与静态分析工具,主要包括:
8.3、8.2、8.1)提供不同PHP版本环境,适配项目需求。php-cs-fixer fix)或静态类型分析(如phpstan analyze),提前发现问题。-v参数挂载)。通过docker run命令直接运行容器,挂载项目目录并执行目标工具。基本语法:
bashdocker run --rm -v $(pwd):/app jakzal/phpqa:<tag> <tool> [arguments]
--rm:容器退出后自动删除,避免残留临时容器。-v $(pwd):/app:将当前目录(项目根目录)挂载到容器内的/app目录(工具默认工作目录)。<tag>:指定PHP版本标签(如8.3、8.2,默认标签为最新稳定PHP版本)。<tool>:目标工具名称(如phpstan、psalm、phpcs等)。[arguments]:工具运行参数(如分析目录、配置文件路径等)。1. PHPStan静态类型分析
分析项目src目录,使用本地phpstan.neon配置:
bashdocker run --rm -v $(pwd):/app jakzal/phpqa:8.3 phpstan analyze src --configuration=phpstan.neon
2. PHP-CS-Fixer代码风格修复
修复当前目录下所有PHP文件的代码风格,使用本地.php-cs-fixer.php配置:
bashdocker run --rm -v $(pwd):/app jakzal/phpqa:8.3 php-cs-fixer fix --config=.php-cs-fixer.php
3. PHPMD代码复杂度检测
分析src目录,输出XML格式报告:
bashdocker run --rm -v $(pwd):/app jakzal/phpqa:8.3 phpmd src xml cleancode,codesize,controversial,design,naming,unusedcode
通过docker-compose.yml定义服务,简化多工具组合使用或频繁调用场景:
yamlversion: '3.8' services: phpqa: image: jakzal/phpqa:8.3 volumes: - ./:/app # 挂载项目目录 - ./phpstan.neon:/app/phpstan.neon # 挂载工具配置文件(可选) - ./vendor:/app/vendor # 挂载Composer依赖(加速分析,可选) working_dir: /app # 容器工作目录 # 可添加环境变量(如工具缓存目录) environment: - PHPQA_CACHE_DIR=/app/.phpqa-cache # 工具缓存路径(需本地创建目录)
使用时通过docker-compose run执行工具:
bashdocker-compose run --rm phpqa psalm --show-info=true
镜像支持部分环境变量自定义工具行为(具体以镜像最新版本为准):
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
PHPQA_CACHE_DIR | 工具缓存目录(如PHPStan、Psalm缓存) | /tmp/phpqa-cache |
COMPOSER_HOME | Composer配置与缓存目录 | /tmp/composer |
PHP_INI_DIR | PHP配置文件目录(自定义php.ini) | /usr/local/etc/php |
大部分工具依赖项目内的配置文件(如phpstan.neon、.php-cs-fixer.php、psalm.xml),需确保配置文件通过-v挂载到容器内的/app目录(即项目根目录)。例如:
bash# 挂载本地phpstan.neon到容器内,使PHPStan使用自定义规则 docker run --rm -v $(pwd):/app -v $(pwd)/phpstan.neon:/app/phpstan.neon jakzal/phpqa:8.3 phpstan analyze
root用户运行工具,可能导致生成的缓存文件/修复后的文件权限为root。本地开发时可通过-u $(id -u):$(id -g)参数指定当前用户ID,避免权限冲突:
bashdocker run --rm -u $(id -u):$(id -g) -v $(pwd):/app jakzal/phpqa:8.3 php-cs-fixer fix
jakzal/phpqa@sha256:...)。vendor目录中的类定义,建议挂载本地vendor目录(或在容器内运行composer install)以确保分析准确性。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务