devoption / beacon
Production-ready Docker and Helm support for Laravel applications, with guided installation, Octane integration, and streamlined build/deploy workflows.
Requires
- php: ^8.3
- illuminate/console: ^11.0|^12.0|^13.0
- illuminate/process: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.24
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^3.8
- phpunit/phpunit: ^10.5|^11.5
README
Production-ready Docker and Helm support for Laravel applications, with guided installation, Octane integration, and streamlined build and deploy workflows.
What Beacon does
Beacon installs into an existing Laravel application and scaffolds the first layer of production deployment assets.
Current MVP features:
- interactive
php artisan beacon:installcommand built with Laravel Prompts - optional Laravel Octane installation when the Octane runtime is selected
- Dockerfile generation for
php-fpmoroctane - Helm chart scaffolding under
charts/<application-slug> - managed Composer scripts for
beacon:buildandbeacon:deploy - Pest coverage, Laravel compatibility CI, and automated semantic releases for the package itself
Out of scope for this MVP:
- cloud-specific deployment logic
- full platform provisioning
- environment-specific infrastructure assumptions
Requirements
- PHP
^8.3 - Laravel
^11.0 | ^12.0 | ^13.0
Install
Recommended as a development dependency in the Laravel application you want to prepare:
composer require devoption/beacon --dev
Then run the installer:
php artisan beacon:install
Install flow
Beacon currently prompts for:
- application name
- runtime:
php-fpmoroctane - deployment scaffolding:
docker,helm, ordocker-and-helm - whether Beacon should update Composer scripts
When the Octane runtime is selected, Beacon checks the target application's composer.json and installs laravel/octane if it is not already present.
Generated files
Depending on the options you choose, Beacon generates:
Dockerfilecharts/<application-slug>/Chart.yamlcharts/<application-slug>/values.yamlcharts/<application-slug>/templates/_helpers.tplcharts/<application-slug>/templates/deployment.yamlcharts/<application-slug>/templates/service.yamlcharts/<application-slug>/templates/ingress.yaml
If Composer script updates are enabled, Beacon also manages:
beacon:buildbeacon:deploy
Example managed scripts:
{
"scripts": {
"beacon:build": "docker build --file Dockerfile --tag my-app:latest .",
"beacon:deploy": "helm upgrade --install my-app ./charts/my-app --namespace default --create-namespace"
}
}
Rerunning the installer
Beacon is designed to be rerunnable.
- generated Beacon-managed files are rewritten with current stub output
- unchanged generated files remain unchanged on repeat runs
- Beacon-managed Composer script entries are updated without replacing unrelated user scripts
Development
Run the test suite with:
composer test
Repository automation also includes:
- Laravel compatibility CI in
.github/workflows/ci.yml - publish-readiness validation in
.github/workflows/publish-readiness.yml - automated semantic releases in
.github/workflows/release.yml
For contributor workflow details, see CONTRIBUTING.md.
For maintainer release and Packagist setup notes, see docs/RELEASING.md.