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
| Tool | Command | Purpose |
|---|---|---|
| PHP CLI | php | The interpreter (8.1–8.4 per tag) |
| Composer 2 | composer | Dependency management |
| Git | git | Source checkout, VCS-based Composer installs |
| unzip / zip | unzip / zip | Archive handling for --prefer-dist |
| jq | jq | JSON processing in CI scripts |
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 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.