Skip to main content

Included Tools

Every php-ci image ships a curated set of CLI tools on PATH, so common pipeline steps need no extra installation. Project-level dependencies installed by Composer take precedence via ./vendor/bin/.

Bundled tools

ToolCommandPurpose
PHP CLIphpThe interpreter (8.1–8.4 per tag)
Composer 2composerDependency management
GitgitSource checkout, VCS-based Composer installs
unzip / zipunzip / zipArchive handling for --prefer-dist
jqjqJSON processing in CI scripts
Project binaries win

The globally installed tools are a convenience for ad-hoc commands. For reproducible results, depend on the exact versions you want in your composer.json and call them via ./vendor/bin/phpunit, ./vendor/bin/phpstan, etc. — those override the global copies.

Verify what's installed

docker run --rm himanshuramavat/php-ci:8.3 bash -c '
php --version
composer --version
git --version
jq --version
'

Composer configuration

Composer is preconfigured for non-interactive CI use. Useful environment variables you can set at runtime:

# Relocate Composer's cache to a path you can cache between CI runs
-e COMPOSER_CACHE_DIR=/tmp/composer-cache

# Skip interactive prompts (already the default in CI)
-e COMPOSER_NO_INTERACTION=1

# Allow plugins your project depends on
-e COMPOSER_ALLOW_SUPERUSER=1

Coverage drivers

php-ci does not bundle a dedicated PHP coverage driver by default. If you need coverage reports, install and configure a driver (for example via a derived image or your CI environment) and then run your project’s PHPUnit with --coverage-* flags.

docker run --rm -v "$(pwd):/app" -w /app himanshuramavat/php-ci:8.3 \
bash -c "composer install --no-interaction && \
./vendor/bin/phpunit --coverage-clover=coverage.xml --coverage-text"
Coverage performance

Coverage instrumentation slows tests down. Keep it on a dedicated coverage job and run your fast feedback job without --coverage-* flags.

Test and QA tools

php-ci intentionally does not pin or bundle project-level QA tools (like PHPUnit, PHPStan, or code-style fixers). Install the versions you need in your project's composer.json and run them via ./vendor/bin/* for reproducible pipelines.

Adding more tools

Need something not in the list? Extend the image — see Use as a base image. For the loaded PHP extensions, see PHP Extensions.