Databases
PostgreSQL, MySQL and MariaDB in Joppa: one database per project, extensions (pgvector, PostGIS…), connection URLs and TablePlus.
Joppa runs one server per engine on a fixed port; each project gets its own database on it. It’s lighter than one container per project, and your tools always connect to the same place.
Create a database
On the service page, Databases section: + New database. Give it a name, choose the project to connect and, for PostgreSQL, its extensions.
Usually you don’t even have to: plugging the service into a project in the Environment tab creates the project’s database if it doesn’t exist.
The databases table shows their size, extensions and project. Each database’s menu: Extensions…, Copy URL, Delete….
Connect
| Engine | URL |
|---|---|
| PostgreSQL | postgresql://postgres:postgres@127.0.0.1:5432/<database> |
| MySQL, MariaDB | mysql://root:root@127.0.0.1:3306/<database> |
These are development credentials, on a server that only listens on your machine.
TablePlus
Open in TablePlus (on the service or on a database) opens the connection, already named “Joppa · database” and tagged green as a local environment.
From the terminal
joppa dbs postgres # databases and their URLs
joppa dbs postgres --json # for a script
PostgreSQL extensions
Installed on the server
Some extensions need files on the server. Pick them in Version, port and extensions…: Joppa builds a local PostgreSQL image that includes them, on the next start (a few minutes the first time). Existing databases are kept.
| Extension | Use |
|---|---|
pgvector (vector) |
Embeddings and similarity search |
| PostGIS | Geographic data |
| pgRouting | Route calculation (with PostGIS) |
| HypoPG | Hypothetical indexes |
| pg_partman | Partitioning |
| pg_stat_statements | Query statistics (preloaded) |
Always available
pg_trgm, uuid-ossp, pgcrypto, citext, hstore, unaccent, fuzzystrmatch.
Per database
Extensions… on a database enables or removes them. Unchecking an extension removes it from the database along with what depends on it (vector columns, geometries…).
Enabled by default in new databases chooses the ones that are pre-checked when creating a database, and present in databases created by an external tool (a migration, createdb).
MySQL and MariaDB
MySQL is the official image (LTS and innovation releases), MariaDB its community fork, compatible with the same clients. Both use port 3306 by default: if you run both, the second one takes 3307.