Skip to content

Webserver (Nginx + PHP 8.3) running inside a Docker container.

Notifications You must be signed in to change notification settings

Solutech-Limited/docker-webserver

 
 

Repository files navigation

Laravel Octane Dockerfile

License GitHub release (latest by date) GitHub closed pull requests GitHub Workflow Status

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

Container modes

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 -

Usage

Building Docker image

  1. Clone this repository:
git clone --depth 1 git@github.com:exaco/laravel-octane-dockerfile.git
  1. Copy cloned directory content including deployment directory, Dockerfile, and .dockerignore into your Octane powered Laravel project
  2. Change the directory to your Laravel project
  3. Build your image:
docker build -t <image-name>:<tag> -f <your-octane-driver>.Dockerfile .

Running Docker container

# 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

Utilities

Also, some useful Bash functions and aliases are added in utilities.sh that maybe help.

Notes

  • Laravel Octane logs request information only in the local environment.
  • Please be aware of .dockerignore content

ToDo

  • 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

Credits

License

This repository is open-sourced software licensed under the MIT license.

About

Webserver (Nginx + PHP 8.3) running inside a Docker container.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 67.3%
  • Dockerfile 32.7%