Arama Yap Mesaj Submit
Request a Callback
+90
X
X

Select Your Currency

Turkish Lira $ US Dollar Euro
X
X

Select Your Currency

Turkish Lira $ US Dollar Euro

Contact Us

Location Halkali merkez neighborhood fatih st ozgur apt no 46 , Kucukcekmece , Istanbul , 34303 , TR
Last technical review · 17.08.2026 · Coolify App Deploy

Coolify Application Deployment: PHP ≠ Laravel ≠ Node.js

All three can be “web apps,” yet their production needs differ. Laravel adds queues, schedulers and migrations; Node.js has different process and health behavior; classic PHP depends on document root and PHP-FPM decisions.

Production note

Do not run database migrations on every container restart. Multiple replicas can race the same migration; run it as a single controlled deployment step.

coolify php deploycoolify laravel deploycoolify nodejs deploy
TECHNICAL IMPLEMENTATION PROFILE
EKA CORE
Coolify App Deploy

Choose deployment strategy by framework. Define build command, start process, port, health endpoint, persistent paths and secrets per app so Coolify becomes a reliable deployment layer rather than just a container launcher.

3Runtime patterns
Checked
/healthRelease gate
Checked
ENVSecret boundary
Checked
RollbackDeployment standard
Checked
Technical guide · production-focused · official sources
Quick answer

Choose deployment strategy by framework. Define build command, start process, port, health endpoint, persistent paths and secrets per app so Coolify becomes a reliable deployment layer rather than just a container launcher.

01

Technical scope at a glance

Deploy PHP, Laravel and Node.js on Coolify with runtime-specific patterns for build/Dockerfile, environment, queue, scheduler, health checks, migrations and rollback.

3Runtime patterns

Separate deployment decision trees for PHP, Laravel and Node.js.

/healthRelease gate

An application health endpoint should pass before a new container serves traffic.

ENVSecret boundary

Use platform environment/secret management instead of committing `.env`.

RollbackDeployment standard

Rollback to the previous release must be tested as carefully as forward deployment.

On this page

  1. 1. Runtime decision matrix
  2. 2. Classic PHP: make document root and upload paths explicit
  3. 3. Laravel: treat web, queue and scheduler as separate processes
  4. 4. Node.js: separate build-time and runtime environments
  5. 5. Health checks should reflect dependency boundaries, not just “200 OK”
  6. 6. Design migration and deployment order like a transaction
  7. 7. State explicitly what rollback does not reverse
  8. Frequently asked questions
02

1. Runtime decision matrix

Before adding a project to Coolify, document which process listens on a port, which paths are persistent and where the build happens.

AppBuildProcessPersistent data
Classic PHPComposer/assets optionalNginx/Apache + PHP-FPMuploads
LaravelComposer + frontendWeb + queue + schedulerstorage/uploads
Node.jsNode.jsNode.jsnpm/pnpm/yarn buildnode/pm2/framework serverUsually stateless; app-specific
03

2. Classic PHP: make document root and upload paths explicit

Legacy PHP applications vary between project root, `public_html` and `/public`. A wrong document root can expose source files.

Exclude development dependencies from production Composer installs.
Do not keep uploads inside an immutable image; use a volume or object storage.
Set PHP memory and upload limits explicitly for the workload.
04

3. Laravel: treat web, queue and scheduler as separate processes

Blindly coupling queue workers to the web-container lifecycle can interrupt jobs during deployment. Preserve single-instance behavior where required by the scheduler.

Command
php artisan about
Command
php artisan config:cache
Command
php artisan route:cache
Command
php artisan queue:restart
Command
php artisan migrate --force
05

4. Node.js: separate build-time and runtime environments

Frameworks such as Next.js or Vite may bake some variables into bundles at build time; they do not behave like runtime secrets. Document the distinction.

Command
node --version
Command
npm --version
Command
npm ci
Command
npm run build
Command
npm run start
06

5. Health checks should reflect dependency boundaries, not just “200 OK”

A liveness endpoint says the process is alive; readiness says it can serve traffic. A database outage does not necessarily require both to fail identically.

EndpointPurposeDB check
/liveIs process alive?Usually no
/readyCan serve traffic?If required
07

6. Design migration and deployment order like a transaction

An expand/contract sequence—backward-compatible schema, new app, later cleanup—reduces downtime and rollback risk.

Add new/nullable columns first.
Make the new app compatible with old and new schema.
Remove old columns/indexes in a later deployment.
08

7. State explicitly what rollback does not reverse

Returning to an old container does not automatically reverse database migrations or user uploads. Release rollback and data rollback are separate procedures.

EKA SUNUCU · TECHNICAL

Choose the deployment profile by framework

Plan Eka Sunucu VPS resources around PHP/Laravel/Node.js build time, queues and database load.

Production principleMeasure → Test → DeployNo fabricated benchmark data.
SRC

Official sources

Primary documentation and technical references used by this guide.

EKA

Related technical guides

Continue with related infrastructure and implementation guides.

FAQ

Frequently asked questions

Coolify App Deploy

Should Laravel queue workers be separate in Coolify?

In production they usually benefit from separate lifecycle and scaling from the web process.

Which port should Node.js listen on?

The app should listen on the port expected by the platform/environment; a public host port is usually unnecessary behind the platform proxy.

Should PHP uploads live inside the container?

Persistent uploads should use a volume or object storage rather than an ephemeral redeployed container filesystem.

Does a deployment rollback also roll back the database?

No. Container/image rollback and database rollback are separate operations; design migrations accordingly.

Top