This repository was archived by the owner on Oct 25, 2026. It is now read-only.
Repository navigation
Docker
Syed Ahmer Shah edited this page Oct 25, 2026
·
1 revision
The repository ships a production-style Docker setup: Apache with PHP 8.3 and OPcache, MySQL 8.4, Redis for cache, sessions and the queue, a queue worker and the scheduler.
cp deploy/docker/app.env.example deploy/docker/app.env
# put a key in APP_KEY: php -r "echo 'base64:'.base64_encode(random_bytes(32)), PHP_EOL;"
docker compose up -d --buildOpen http://localhost:8080. On first boot the app container runs the migrations and, with SEED_ON_BOOT=true, seeds films, cinemas and shows.
| Service | What it does |
|---|---|
app |
Apache + PHP 8.3 serving public/, runs migrations on boot, caches config, routes, views and events |
worker |
php artisan queue:work --tries=3 for e-mail, waitlist alerts and web push |
scheduler |
php artisan schedule:work: expires seat holds, sweeps waitlists, extends the weekly schedule |
mysql |
MySQL 8.4 with utf8mb4 |
redis |
Cache, sessions and queue |
The Dockerfile has three stages: Node builds the Vite assets, Composer installs production dependencies with an optimised class map, and the final PHP-Apache image copies only what it needs. deploy/docker/entrypoint.sh picks the role from CONTAINER_ROLE (app, worker or scheduler).
- Put a TLS-terminating proxy in front and set
TRUSTED_PROXIESso rate limits and bans see the real client IP. - Set
SESSION_SECURE_COOKIE=trueonce the site is served over HTTPS. -
deploy/docker/app.envholds secrets and is ignored by Git and by the Docker build context.
BookMyMovie · MIT licence · by Syed Ahmer Shah · Project page
Run it
How it works
Operate it
Read more