Database-Eggs Docs · Examples

Examples

Real, copy-pasteable artifacts for the Multi Database egg, generated from the actual egg JSON in this repository.

1 · Egg JSON excerpt

The head of the exported egg definition (egg-database-multi.json, PTDL PTDL_v2): meta, the universal Docker image, and the first exported variables. Every variable follows this shape: env_variable is what the runtime reads, rules is the panel-side validation.

json
{
  "_comment": "Excerpt of egg-database-multi.json - see the repo for the full exported egg.",
  "meta": {
    "version": "PTDL_v2",
    "update_url": "https://raw.githubusercontent.com/PotenFYR-Studios/Database-Eggs/master/egg-database-multi.json"
  },
  "exported_at": "2026-08-22T04:00:00+00:00",
  "name": "Multi Database",
  "docker_images": {
    "Universal Multi-Database (All Engines)": "ghcr.io/potenfyr-studios/database-eggs:latest"
  },
  "variables": [
    {
      "name": "Database Type",
      "description": "Engine to run (installed isolated inside the container on demand).\nSQL: mariadb, mysql, postgresql, cockroachdb, yugabytedb, tidb, dolt\nNoSQL: mongodb (mongo), ferretdb, arangodb, orientdb, ravendb, cassandra, aerospike, rethinkdb\nIn-Memory/KV: redis, valkey, keydb, dragonfly, memcached, etcd, nats, immudb, consul\nVector/Search: meilisearch, typesense, qdrant, elasticsearch, opensearch, solr, manticoresearch, milvus, weaviate, quickwit\nTime-Series/Storage: influxdb, clickhouse, victoriametrics, prometheus, questdb, seaweedfs, garage, minio, pocketbase, loki, sqlite\nGraph/Ledger/Events: neo4j, dgraph, surrealdb, kafka | Misc: sqld, custom\nVersions: latest, stable, beta, alpha, nightly, snapshot, a major (18), a series (11.4),\nan exact version (8.0.45) or a direct https URL. Invalid/nonexistent pins are refused\nwith a 'Did you mean ...?' list of the closest published versions.",
      "env_variable": "DATABASE_TYPE",
      "default_value": "mariadb",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|max:32",
      "field_type": "text"
    },
    {
      "name": "Database Version",
      "description": "Version to run. 'latest' auto-resolves upstream newest. Series like 18 or 11.4 resolve to the latest patch automatically; full versions (8.0.45) are used as-is. Switching majors never deletes old data - a fresh data/<engine>/<version> instance is created and the old one is preserved.",
      "env_variable": "DB_VERSION",
      "default_value": "latest",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|max:128",
      "field_type": "text"
    }
  ]
}

Grab the complete file (28 variables, 51 engine targets):

bash
curl -fsSL https://raw.githubusercontent.com/PotenFYR-Studios/Database-Eggs/master/egg-database-multi.json -o egg-database-multi.json

2 · Docker Compose

Standalone Docker needs no panel: the same image and the same exported variables. The compose below boots PostgreSQL 18 with two auto-provisioned users.

yaml
services:
  database:
    image: ghcr.io/potenfyr-studios/database-eggs:latest
    container_name: my-database
    restart: unless-stopped
    ports:
      - "5432:5432"            # primary database port
    environment:
      DATABASE_TYPE: postgresql
      DB_VERSION: "18"
      DB_NAME: appdb
      DB_USERNAMES: alice,bob
      DB_PASSWORDS: ""          # empty slot = auto-generate
      DB_ROOT_PASSWORD: ""      # empty = auto-generate
      AUTO_GENERATE_CREDENTIALS: "1"
      SAVE_TO_ENV: "1"
      PERFORMANCE_TUNING: "1"
      SECURITY_HARDENING: "1"
    volumes:
      - ./data:/home/container/data
    # Credentials land in ./data/../.env inside the container;
    # read them with:  docker exec my-database cat /home/container/.env
    stop_grace_period: 30s
    # The image ships tini as PID 1 with graceful signal handling;
    # no custom entrypoint needed for standalone Docker.

Start it and read the generated credentials:

bash
docker compose up -d
docker exec my-database cat /home/container/.env   # DB_PASSWORD, DB_ROOT_PASSWORD, ...

3 · Panel import

Pterodactyl / Jexactyl: Admin → Nests → Import Egg. Pelican: Admin → Eggs → Import. Both accept the same PTDL_v2 file. Or let the panel fetch it by URL during import:

text
https://raw.githubusercontent.com/PotenFYR-Studios/Database-Eggs/master/egg-database-multi.json

Full step-by-step with variable explanations: the install guide.