blamebutton / laravel-docker-builder
Production ready Docker files for Laravel
0.1.4
2023-01-20 18:01 UTC
Requires
- php: ^8.0
- composer/semver: ^3.3
- guzzlehttp/guzzle: ^7.5
- illuminate/contracts: ^9.0 | ^10.0
- twig/twig: ^3.0
Requires (Dev)
- laravel/pint: ^1.4
- orchestra/testbench: ^7.19
README
Features
- Build Docker images using the Artisan CLI
- Detect PHP version and extensions
- Bundle assets with Vite.js or Laravel Mix
- Separate NGINX and PHP-FPM images
- Deployment examples for Kubernetes and Docker Compose
Installation
composer require --dev blamebutton/laravel-docker-builder
Usage
Detect Configuration
php artisan docker:generate --detect
When --detect
is passed to the docker:generate
command, it will automatically detect the following requirements:
- PHP version, detected using the
php
version in yourcomposer.json
- PHP extensions, detected using the configuration of your project:
- Cache driver: Redis, Memcached, APC
- Database driver: MySQL, Postgres, SQL Server
- Broadcasting driver: Redis
- Queue driver: Redis
- Session driver: Redis, Memcached, APC
- Node package manager, detected using the existence of
package-lock.json
oryarn.lock
- Node build tool, detected using the existence of
vite.config.js
orwebpack.mix.js
Manual Configuration
php artisan docker:generate
When no options are passed to docker:generate
, a prompt is used to configure the project's requirements.
See all available options, and their supported values, by running php artisan docker:generate --help
.
-p, --php-version
- PHP version for Docker image-e, --php-extensions
- PHP extensions (comma-separated) to include in Docker image-o, --optimize
- Runphp artisan optimize
on container start-a, --alpine
- Use Alpine Linux based images-m, --node-package-manager
- Install Node dependencies using NPM or Yarn-b, --node-build-tool
- Run Vite.js or Laravel Mix build step
Configuration
Option 1: Config File
php artisan vendor:publish --provider="BlameButton\LaravelDockerBuilder\DockerServiceProvider"
Option 2: .env
By default, the configuration file reads the following environment variables to determine the Docker image tags.
DOCKER_NGINX_TAG=laravel-app:nginx DOCKER_PHP_TAG=laravel-app:php