Files
screamingFrog/docker-compose.yml
Martin e569d189d5 Add comprehensive quality tooling and fix code style issues
Quality Tools Added:
- PHPStan (Level 8) for static analysis
- PHP_CodeSniffer (PSR-12) for code style
- Updated PHPUnit test suite with type safety

Code Improvements:
- Fixed all PHPStan Level 8 errors (13 issues)
- Auto-fixed 25 PSR-12 code style violations
- Added proper type hints for arrays and method parameters
- Fixed PDOStatement|false handling in api.php and tests
- Improved null-safety for parse_url() calls

Configuration:
- phpstan.neon: Level 8, analyzes src/ and tests/
- phpcs.xml: PSR-12 standard, excludes vendor/
- docker-compose.yml: Mount config files for tooling
- composer.json: Add phpstan, phpcs, phpcbf scripts

Documentation:
- Updated README.md with testing and quality sections
- Updated AGENTS.md with quality gates and workflows
- Added pre-commit checklist for developers

All tests pass (9/9), PHPStan clean (0 errors), PHPCS compliant (1 warning)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 23:58:21 +02:00

63 lines
1.3 KiB
YAML

version: '3.8'
services:
php:
build:
context: .
dockerfile: Dockerfile
container_name: php_app
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./tests:/var/www/tests
- ./composer.json:/var/www/composer.json
- ./composer.lock:/var/www/composer.lock
- ./phpstan.neon:/var/www/phpstan.neon
- ./phpcs.xml:/var/www/phpcs.xml
- ./config/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- mariadb
networks:
- app-network
mariadb:
image: mariadb:11.5
container_name: mariadb_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: app_database
MYSQL_USER: app_user
MYSQL_PASSWORD: app_password
ports:
- "3307:3306"
volumes:
- mariadb_data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- app-network
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
restart: unless-stopped
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: root_password
ports:
- "8081:80"
depends_on:
- mariadb
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mariadb_data:
driver: local