Thank you for your interest in contributing! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Check existing issues to avoid duplicates
- Use the bug report template when creating a new issue
- Include:
- PHP version and Alpine version
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs or error messages
- Check existing issues for similar suggestions
- Use the feature request template
- Describe the use case and benefits
- Consider backwards compatibility
- Fork the repository and create a feature branch
- Follow the coding standards (see below)
- Write tests for new functionality
- Update documentation if needed
- Submit a pull request with a clear description
- Docker 20.10+
- Docker Compose v2
- Make
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/docker-server-php.git
cd docker-server-php
# Create a feature branch
git checkout -b feature/your-feature-name
# Copy environment file
cp .env.example .env.dev
# Start development environment
make up# Build all targets
make build-runtime
make build-dev
make build-prod
# Run tests
make test-targets
# Test specific target
make test-dev- Use multi-stage builds
- Minimize layers where possible
- Pin versions for reproducibility
- Add comments for complex operations
- Follow Hadolint recommendations
- Use
#!/bin/bashor#!/bin/shshebang - Use
set -efor error handling - Quote variables:
"$VAR" - Use meaningful variable names
- Add comments for complex logic
- Use templates with environment variable substitution
- Provide sensible defaults
- Document all options
- Use clear, concise language
- Include code examples
- Keep README.md updated
- Add to MkDocs documentation for detailed guides
Follow Conventional Commits:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formatting (no code change)refactor: Code refactoringtest: Adding testschore: Maintenance tasks
Examples:
feat(dockerfile): add PHP 8.5 support
fix(nginx): correct brotli module path
docs(readme): update installation instructions
- Update documentation for any changed functionality
- Add tests for new features
- Ensure all tests pass:
make test-targets - Update CHANGELOG.md with your changes
- Request review from maintainers
- Code follows project style guidelines
- Tests added/updated and passing
- Documentation updated
- CHANGELOG.md updated
- Commit messages follow conventions
- No secrets or credentials committed
Releases are automated via GitHub Actions:
- Maintainers create a git tag:
git tag v1.2.3 - Push the tag:
git push origin v1.2.3 - GitHub Actions builds and publishes images
- Release notes are generated automatically
- Questions: Open a Discussion
- Bugs: Open an Issue
- Security: See SECURITY.md
By contributing, you agree that your contributions will be licensed under the EUPL-1.2 license.