Deploying overview
How DockHosting builds and runs your app, whatever stack it's written in.
Every deploy — regardless of framework — goes through the same four stages.
Detect
DockHosting reads your repository. If there's a Dockerfile at the root, it's used as-is — nothing else matters. Otherwise, DockHosting looks for the markers of a known framework (a package.json, a composer.json with Laravel in it, a go.mod, and so on) and picks a matching build.
Build
The image builds with layer caching, so a one-line change in your code ships in seconds rather than rebuilding everything from scratch.
Run
The new container starts on your project's private network, with persistent storage mounted, and must pass a health check before it's considered ready — see Zero-downtime deploys.
Live
A free HTTPS subdomain is available immediately at your-app.dockhosting.dev. Add your own domain whenever you're ready — see Domains & SSL.
Framework guides
Docker
Bring your own Dockerfile — multi-stage builds, custom base images, build args.
Node.js
Express and plain Node — detected automatically from package.json.
NestJS
Build, port binding, and the config module.
Laravel
Composer install, the app key, migrations, and queue workers.
PHP
Plain PHP with or without Composer dependencies.
Python
Django, FastAPI, and Flask — with Gunicorn or Uvicorn.
Go
A single binary from go.mod — build tags and CGO notes.
Ruby
Rails and Bundler — migrations, assets, and Sidekiq.
Spring Boot
Maven or Gradle, and reading PORT correctly.
Static sites
Vite, Astro, or plain HTML — no server process needed.
Deploying something not listed here? If it runs in a container, bring a Dockerfile and follow the Docker guide — that path works for anything.
Redeploying
dock deploy (or a push, if you've connected a Git repository) triggers a new build every time. The new version builds and health-checks itself before traffic ever reaches it, and the previous version is kept around for a quick rollback — see Zero-downtime deploys.