A minimal starter template for Phoenix Framework applications.
# Clone the repository
git clone git@git2.fastbill.com:phoenix/phoenix-starter.git my-app
cd my-app
rm -rf .git && git init
# Copy environment file
cp .env.example .env
# Start Docker
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# Install dependencies
docker compose exec app composer install
# Install git hooks
docker compose exec app composer hooks:installmy-app/
├── App/
│ ├── ApplicationKernel.php # Application kernel
│ └── Http/
│ ├── RouteProvider.php # Route definitions
│ └── Controller/
│ └── HomeController.php
├── config/
│ └── .config.php # Application config
├── public/
│ └── index.php # Web entry point
├── templates/
│ └── home.html.twig # Twig templates
├── docker-compose.yml # Production config
├── docker-compose.dev.yml # Development overrides
├── .gitlab-ci.yml # CI/CD pipeline
├── composer.json
├── phpunit.xml
├── phpstan.neon
└── .php-cs-fixer.php
# Start services
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# View logs
docker compose logs -f app
# Run commands in container
docker compose exec app <command>
# Stop services
docker compose down# Run tests
docker compose exec app composer test
# Run PHPStan
docker compose exec app composer phpstan
# Fix code style
docker compose exec app composer cs:fix
# Check code style (dry-run)
docker compose exec app composer cs:checkdocker compose -f docker-compose.yml -f docker-compose.dev.yml --profile queue up -d| Service | Port | Description |
|---|---|---|
| App | 8080 | FrankenPHP web server |
| MySQL | 3306 | Database |
| Redis | 6379 | Cache & sessions |
| RabbitMQ | 5672, 15672 | Message queue (optional) |
This starter uses Phoenix Docker images from the FastBill registry:
| Image | Purpose |
|---|---|
docker.fastbill.com/phoenix/devops/docker-images/webapp |
Production web server |
docker.fastbill.com/phoenix/devops/docker-images/webapp-dev |
Development (with Xdebug) |
docker.fastbill.com/phoenix/devops/docker-images/worker-dev |
Queue worker (development) |
See docker-images for all available images.
This starter includes a GitLab CI pipeline with linting and testing enabled by default.
| Job | Description |
|---|---|
cs-check |
Code style checking (PHP-CS-Fixer) |
phpstan:php74 |
Static analysis (PHP 7.4) |
phpstan:php84 |
Static analysis (PHP 8.4) |
test:php74 |
Tests (PHP 7.4) |
test:php84 |
Tests with coverage (PHP 8.4) |
The following jobs are disabled by default. To enable them, remove or comment out the corresponding section in .gitlab-ci.yml:
# To enable documentation deployment:
# pages:
# rules:
# - when: never
# To enable release workflow (requires GITLAB_API_TOKEN):
# create-release:
# rules:
# - when: never
# To enable Slack notifications (requires SLACK_WEBHOOK_URL):
# notify-slack:
# rules:
# - when: never
# To enable Satis publishing (for Composer packages):
# satis-update:
# rules:
# - when: neverSee ci-templates for full documentation.
MIT