feat: enterprise-grade Docker setup for Dokploy deployment
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled

- Add multi-stage Dockerfile (node-builder, composer-builder, production)
- Add Nginx config with WebSocket proxy at /_ws path
- Add PHP-FPM pool config, php.ini with OPcache tuning
- Add Supervisord managing 7 processes: php-fpm, nginx, horizon, scheduler, reverb, pulse-check, pulse-work
- Add entrypoint.sh with auto-migration, config caching, storage setup
- Add .dockerignore and .env.production.example
- Install laravel/horizon for production queue management and dashboard
- Install laravel/pulse for production monitoring with Reverb integration
- Configure TrustProxies middleware for HTTPS behind Traefik
- Add horizon:snapshot to scheduler
- Add VITE_REVERB_PATH for WebSocket path routing through Nginx
This commit is contained in:
idevakk
2026-03-09 22:55:05 +05:30
parent c01dcaf4bc
commit dae2bedca4
24 changed files with 1327 additions and 1 deletions

284
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ac4723b249fb557c0154b1b59679a168",
"content-hash": "cd1592da57958973057c2f7e7a9cfb1d",
"packages": [
{
"name": "anourvalar/eloquent-serialize",
@@ -1245,6 +1245,61 @@
],
"time": "2024-02-05T11:56:58+00:00"
},
{
"name": "doctrine/sql-formatter",
"version": "1.5.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/sql-formatter.git",
"reference": "9563949f5cd3bd12a17d12fb980528bc141c5806"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/9563949f5cd3bd12a17d12fb980528bc141c5806",
"reference": "9563949f5cd3bd12a17d12fb980528bc141c5806",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"require-dev": {
"doctrine/coding-standard": "^14",
"ergebnis/phpunit-slow-test-detector": "^2.20",
"phpstan/phpstan": "^2.1.31",
"phpunit/phpunit": "^10.5.58"
},
"bin": [
"bin/sql-formatter"
],
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\SqlFormatter\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dorn",
"email": "jeremy@jeremydorn.com",
"homepage": "https://jeremydorn.com/"
}
],
"description": "a PHP SQL highlighting library",
"homepage": "https://github.com/doctrine/sql-formatter/",
"keywords": [
"highlight",
"sql"
],
"support": {
"issues": "https://github.com/doctrine/sql-formatter/issues",
"source": "https://github.com/doctrine/sql-formatter/tree/1.5.4"
},
"time": "2026-02-08T16:21:46+00:00"
},
{
"name": "dragonmantank/cron-expression",
"version": "v3.6.0",
@@ -3072,6 +3127,86 @@
},
"time": "2025-11-25T14:46:28+00:00"
},
{
"name": "laravel/horizon",
"version": "v5.45.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/horizon.git",
"reference": "637e065ae0a704288595b896ad1c7c3c9741869b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/horizon/zipball/637e065ae0a704288595b896ad1c7c3c9741869b",
"reference": "637e065ae0a704288595b896ad1c7c3c9741869b",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-pcntl": "*",
"ext-posix": "*",
"illuminate/contracts": "^9.21|^10.0|^11.0|^12.0|^13.0",
"illuminate/queue": "^9.21|^10.0|^11.0|^12.0|^13.0",
"illuminate/support": "^9.21|^10.0|^11.0|^12.0|^13.0",
"laravel/sentinel": "^1.0",
"nesbot/carbon": "^2.17|^3.0",
"php": "^8.0",
"ramsey/uuid": "^4.0",
"symfony/console": "^6.0|^7.0|^8.0",
"symfony/error-handler": "^6.0|^7.0|^8.0",
"symfony/polyfill-php83": "^1.28",
"symfony/process": "^6.0|^7.0|^8.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
"orchestra/testbench": "^7.56|^8.37|^9.16|^10.9|^11.0",
"phpstan/phpstan": "^1.10|^2.0",
"predis/predis": "^1.1|^2.0|^3.0"
},
"suggest": {
"ext-redis": "Required to use the Redis PHP driver.",
"predis/predis": "Required when not using the Redis PHP driver (^1.1|^2.0|^3.0)."
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Horizon": "Laravel\\Horizon\\Horizon"
},
"providers": [
"Laravel\\Horizon\\HorizonServiceProvider"
]
},
"branch-alias": {
"dev-master": "6.x-dev"
}
},
"autoload": {
"psr-4": {
"Laravel\\Horizon\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Dashboard and code-driven configuration for Laravel queues.",
"keywords": [
"laravel",
"queue"
],
"support": {
"issues": "https://github.com/laravel/horizon/issues",
"source": "https://github.com/laravel/horizon/tree/v5.45.1"
},
"time": "2026-03-06T15:31:27+00:00"
},
{
"name": "laravel/pint",
"version": "v1.27.1",
@@ -3198,6 +3333,94 @@
},
"time": "2026-02-06T12:17:10+00:00"
},
{
"name": "laravel/pulse",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/pulse.git",
"reference": "7cde76c1abe23492edeee7dadec01906cf70427d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pulse/zipball/7cde76c1abe23492edeee7dadec01906cf70427d",
"reference": "7cde76c1abe23492edeee7dadec01906cf70427d",
"shasum": ""
},
"require": {
"doctrine/sql-formatter": "^1.4.1",
"guzzlehttp/promises": "^1.0|^2.0",
"illuminate/auth": "^10.48.4|^11.0.8|^12.0",
"illuminate/cache": "^10.48.4|^11.0.8|^12.0",
"illuminate/config": "^10.48.4|^11.0.8|^12.0",
"illuminate/console": "^10.48.4|^11.0.8|^12.0",
"illuminate/contracts": "^10.48.4|^11.0.8|^12.0",
"illuminate/database": "^10.48.4|^11.0.8|^12.0",
"illuminate/events": "^10.48.4|^11.0.8|^12.0",
"illuminate/http": "^10.48.4|^11.0.8|^12.0",
"illuminate/queue": "^10.48.4|^11.0.8|^12.0",
"illuminate/redis": "^10.48.4|^11.0.8|^12.0",
"illuminate/routing": "^10.48.4|^11.0.8|^12.0",
"illuminate/support": "^10.48.4|^11.0.8|^12.0",
"illuminate/view": "^10.48.4|^11.0.8|^12.0",
"laravel/sentinel": "^1.0",
"livewire/livewire": "^3.6.4|^4.0",
"nesbot/carbon": "^2.67|^3.0",
"php": "^8.1",
"symfony/console": "^6.0|^7.0"
},
"conflict": {
"nunomaduro/collision": "<7.7.0"
},
"require-dev": {
"guzzlehttp/guzzle": "^7.7",
"mockery/mockery": "^1.0",
"orchestra/testbench": "^8.36|^9.15|^10.8",
"pestphp/pest": "^2.0|^3.0|^4.0",
"pestphp/pest-plugin-laravel": "^2.2|^3.0|^4.0",
"phpstan/phpstan": "^1.12.21",
"predis/predis": "^1.0|^2.0"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Pulse": "Laravel\\Pulse\\Facades\\Pulse"
},
"providers": [
"Laravel\\Pulse\\PulseServiceProvider"
]
},
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Laravel\\Pulse\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.",
"homepage": "https://github.com/laravel/pulse",
"keywords": [
"laravel"
],
"support": {
"issues": "https://github.com/laravel/pulse/issues",
"source": "https://github.com/laravel/pulse"
},
"time": "2026-02-12T18:51:24+00:00"
},
{
"name": "laravel/reverb",
"version": "v1.8.0",
@@ -3277,6 +3500,65 @@
},
"time": "2026-02-21T14:37:48+00:00"
},
{
"name": "laravel/sentinel",
"version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/sentinel.git",
"reference": "7a98db53e0d9d6f61387f3141c07477f97425603"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/sentinel/zipball/7a98db53e0d9d6f61387f3141c07477f97425603",
"reference": "7a98db53e0d9d6f61387f3141c07477f97425603",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/container": "^8.37|^9.0|^10.0|^11.0|^12.0|^13.0",
"php": "^8.0"
},
"require-dev": {
"laravel/pint": "^1.27",
"orchestra/testbench": "^6.47.1|^7.56|^8.37|^9.16|^10.9|^11.0",
"phpstan/phpstan": "^2.1.33"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Laravel\\Sentinel\\SentinelServiceProvider"
]
},
"branch-alias": {
"dev-main": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Laravel\\Sentinel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Mior Muhammad Zaki",
"email": "mior@laravel.com"
}
],
"support": {
"source": "https://github.com/laravel/sentinel/tree/v1.0.1"
},
"time": "2026-02-12T13:32:54+00:00"
},
{
"name": "laravel/serializable-closure",
"version": "v2.0.10",