Dokploy
An open-source Platform-as-a-Service (PaaS) alternative to Vercel, Netlify, and Heroku. Deploy any application (Node.js, PHP, Python, Go, Ruby, etc.), manage databases (PostgreSQL, MySQL, MongoDB, MariaDB, Redis), automate backups, and scale with Docker Swarm — all through a clean web UI.
yaml
docker-compose.yml
services:
dokploy:
image: dokploy/dokploy:latest
container_name: dokploy
restart: unless-stopped
environment:
NODE_ENV: ${NODE_ENV:-production}
PORT: ${PORT:-3000}
DATABASE_URL: ${DATABASE_URL}
ports:
- ${DOKPLOY_PORT:-3000}:${PORT:-3000}
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik-config:/etc/traefik
networks:
- dokploy-network
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
labels:
- traefik.enable=true
- dokploy.type=main
postgres:
image: postgres:16-alpine
container_name: dokploy-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-dokploy}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-dokploy}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test:
- CMD-SHELL
- pg_isready -U ${POSTGRES_USER:-dokploy} -d ${POSTGRES_DB:-dokploy}
interval: 10s
timeout: 5s
retries: 5
networks:
- dokploy-network
redis:
image: redis:7-alpine
container_name: dokploy-redis
restart: unless-stopped
command: redis-server --appendonly yes
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
volumes:
- redis_data:/data
healthcheck:
test:
- CMD
- redis-cli
- "-a"
- ${REDIS_PASSWORD}
- ping
interval: 10s
timeout: 5s
retries: 5
networks:
- dokploy-network
volumes:
postgres_data:
driver: local
redis_data:
driver: local
networks:
dokploy-network:
driver: bridge
.ENV
.env example
# ── Application ────────────────────────────────────────────────────────────
NODE_ENV=production
PORT=3000
# ── PostgreSQL ─────────────────────────────────────────────────────────────
DATABASE_URL="postgres://dokploy:${POSTGRES_PASSWORD}@postgres:5432/dokploy"
POSTGRES_USER=dokploy
POSTGRES_PASSWORD=your_secure_postgres_password_here
POSTGRES_DB=dokploy
# ── Redis ──────────────────────────────────────────────────────────────────
REDIS_PASSWORD=your_secure_redis_password_here
# ── Access ──────────────────────────────────────────────────────────────────
DOKPLOY_PORT=3000
deployment
Quick Start
- Create a working directory named after the service.
- Copy the compose file and generated `.env` into that directory.
- Review the variables and replace placeholders with real values.
- Run `docker compose up -d`.
mkdir dokploy-postgres-redis
cd dokploy-postgres-redis
# create docker-compose.yml
# create .env
docker compose up -d