Skip to main content
There are two ways to start. Docker gives you a runtime that matches production; a local install is faster if you already run PHP that way.

With Docker

Nothing to install but Docker itself.
That builds a development image from the same base as the production one, mounts your working tree, and starts PostgreSQL, Redis, Horizon, the scheduler and Vite. Edits take effect immediately — no rebuild.
The application is on http://localhost:8000, Vite on http://localhost:5173.

Why the dev image shares the production base

The development image is the dev target of docker/Dockerfile, built from the same base stage as the production one. That is deliberate: a separately assembled development image would have its own PHP build and extension set, and every difference between the two becomes a bug that only appears after deployment. What does differ is only what should:
  • dev Composer dependencies are installed
  • the source is mounted rather than copied, so edits are live
  • opcache.validate_timestamps=1, or nothing you type would take effect
  • the container runs as your user id, so files it writes stay yours
  • Xdebug is available, off unless the image is built with INSTALL_XDEBUG=1
vendor/ and node_modules/ are deliberately not mounted from the host. They are installed inside the container for its own platform, and sharing them would mix binaries built for a different OS.

Xdebug

Step debugging is trigger-based, so it costs nothing until you ask for it. The callback address defaults to host.docker.internal, which resolves on Linux too because compose maps it to the host gateway. If your IDE is elsewhere:

On your own machine

Requirements:
  • PHP 8.4 or newer
  • Composer 2
  • Node.js 20+ and npm
  • PostgreSQL 15+ or compatible
  • Redis
  • PHP extensions: pdo_pgsql, redis, intl, bcmath, gd, zip, plus pcntl and posix for Horizon
Check them all at once:
1

Install dependencies

2

Prepare the environment

Then check the database settings:
3

Migrate and run

composer run dev starts the Laravel dev server, the queue listener, pail log tailing, and the Vite dev server together.

Checks

See Testing and architecture checks for what each covers.

Running it like production

To exercise the actual production images locally, follow Docker Compose. Same topology, different images — useful for reproducing something that only happens with a compiled config cache and no dev dependencies.