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

  1. Create a working directory named after the service.
  2. Copy the compose file and generated `.env` into that directory.
  3. Review the variables and replace placeholders with real values.
  4. Run `docker compose up -d`.
mkdir dokploy-postgres-redis
cd dokploy-postgres-redis
# create docker-compose.yml
# create .env
docker compose up -d