Production-ready Dockerfiles for Laravel Octane powered web services and microservices.
The Docker configuration provides the following setup:
- PHP 8.2 and 8.3 official Debian-based and Alpine-based images
- Preconfigured JIT compiler and OPcache
You can run the Docker container in different modes:
Mode | CONTAINER_MODE |
HTTP server |
---|---|---|
HTTP Server (default) | http |
FrankenPHP / Swoole / RoadRunner |
Scheduler | scheduler |
- |
Worker | worker |
- |
- Clone this repository:
git clone --depth 1 git@github.com:exaco/laravel-octane-dockerfile.git
- Copy cloned directory content including
deployment
directory,Dockerfile
, and.dockerignore
into your Octane powered Laravel project - Change the directory to your Laravel project
- Build your image:
docker build -t <image-name>:<tag> -f <your-octane-driver>.Dockerfile .
# HTTP mode
docker run -p <port>:8000 --rm <image-name>:<tag>
# Horizon mode
docker run -e CONTAINER_MODE=horizon --rm <image-name>:<tag>
# Scheduler mode
docker run -e CONTAINER_MODE=scheduler --rm <image-name>:<tag>
# HTTP mode with Scheduler
docker run -e WITH_SCHEDULER=true -p <port>:8000 --rm <image-name>:<tag>
# Worker mode
docker run -e CONTAINER_MODE=worker -e WORKER_COMMAND="php /var/www/html/artisan foo:bar" --rm <image-name>:<tag>
# Running a single command
docker run --rm <image-name>:<tag> php artisan about
Also, some useful Bash functions and aliases are added in utilities.sh
that maybe help.
- Laravel Octane logs request information only in the
local
environment. - Please be aware of
.dockerignore
content
- Add support for PHP 8.3
- Add support for worker mode
- Build assets with Bun
- Create standalone and self-executable app
- Add support for RoadRunner
- Add support for the full-stack apps (Front-end assets)
- Add support
testing
environment and CI - Add support for the Laravel scheduler
- Add support for Laravel Dusk
- Support more PHP extensions
- Add tests
- Add Alpine-based images
This repository is open-sourced software licensed under the MIT license.