$ aoox

DocsStack & database

Managed database

Membuat PostgreSQL, MySQL, MariaDB, atau Redis per project dan menghubungkannya ke aplikasi.

Engine
PostgreSQL · MySQL · MariaDB · Redis
Bentuk
Container + volume per database
Hubungkan
${{database.<slug>.url}} di env aplikasi

Engine yang didukung

EngineImage (tag default)PortBentuk URL internal
PostgreSQLpostgres:16-alpine5432postgresql://app:pass@host:5432/<db>
MySQLmysql:83306mysql://app:pass@host:3306/<db>
MariaDBmariadb:113306mysql://app:pass@host:3306/<db>
Redisredis:7-alpine6379redis://:pass@host:6379/0

Container mengikuti env resmi image Docker Hub (POSTGRES_*, MYSQL_*, MARIADB_*, --requirepass). Username SQL selalu app; nama database = slug dengan - diganti _. Password acak, disimpan terenkripsi.

Membuat database

  1. Halaman project → Database baru

    FieldKeterangan
    NamaJadi slug unik (global, bukan per project). Container aoox-db-<slug>, volume aoox_db_<slug>.
    Enginepostgres / mysql / mariadb / redis.
    Versi (tag image)Tag Docker Hub. Kosong = default di tabel atas. Contoh: 17, 8.4, 7.2.
    Port hostOpsional. Isi hanya kalau perlu koneksi dari luar Docker (laptop, server remote). Aplikasi di host aoox tidak membutuhkannya.
    Batas CPU / memoriOpsional; bisa diubah nanti.
  2. Tunggu status running

    1. 01creatingpull image, buat volume & container
    2. 02runningsiap dipakai; kredensial tersedia
    3. 03stoppedcontainer berhenti, data tetap
    4. 04errorprovisioning gagal — lihat pesan

    Provisioning berjalan di latar (pull image bisa lama); halaman menyegarkan otomatis selama creating.

  3. Hubungkan ke aplikasi

    Di env aplikasi (project yang sama), rujuk dengan referensi — bukan menyalin password:

    Env aplikasi
    DATABASE_URL=${{database.app-db.url}}

    Deploy (atau rollback) agar container aplikasi baru mendapat nilainya. Bentuk lain (host, port, username, …) ada di Environment variables.

Tidak ada injeksi otomatis
Membuat database tidak otomatis menambahkan env ke aplikasi mana pun. Referensi hanya berlaku untuk aplikasi/stack di project yang sama.

Koneksi

JenisHostSiapa yang bisa pakai
Koneksi internalaoox-db-<slug>Container di network aoox: aplikasi, stack compose yang bergabung ke network itu, job.
Koneksi eksternal<ip-server>:<port host> (hanya bila port host diisi)Laptop, client GUI, aplikasi di server remote. Amankan dengan firewall.

Tab Ringkasan menampilkan keduanya beserta kredensial (disamarkan, bisa disalin) dan DATABASE_URL siap tempel.

Database tambahan di server yang sama

Satu container PostgreSQL/MySQL/MariaDB bisa menampung beberapa database (schema). Di tab Data, owner/admin bisa membuat database baru dengan nama [A-Za-z_][A-Za-z0-9_]*; yang dibuat saat provisioning adalah primary dan tidak bisa dihapus.

Merujuk database tambahan dari env
REPORTS_DB_URL=${{database.app-db.url:reports}}
  • Host, user, dan password sama — hanya bagian nama database yang berbeda.
  • Tab Ringkasan menampilkan Koneksi untuk database per nama bila ada lebih dari satu.
  • Backup punya opsi menyertakan semua database di server (lihat Backup).
  • Redis tidak punya fitur ini (pakai nomor DB di URL bila perlu).

Operasi

AksiDi manaCatatan
Stop / StartPanel databaseContainer berhenti; data di volume tetap. Aplikasi yang terhubung akan error sampai start lagi.
Batas sumber dayaKartu Batas sumber dayaBerlaku langsung; mencabut batas = container dibuat ulang (restart singkat).
Ganti versi (tag)—Belum ada dari UI. Buat database baru, restore backup ke sana.
Konfigurasi engineTab MountFile mount ke path config; container di-provision ulang.
HapusPanel databaseDengan atau tanpa menghapus volume. Daftar backup ikut terhapus (cascade); file di S3 juga.

Tab lain

  • Data → Data browser: tabel, query, database tambahan.
  • Backup → Backup & restore: manual, jadwal, retensi, S3.
  • Jobs → perintah terjadwal di container database atau container terpisah dari image engine dengan env DB_* — Scheduled jobs.
  • Mount → file konfigurasi engine (my.cnf, redis.conf) atau volume tambahan — Mount.
  • Metrik CPU/RAM (sampel 15 detik) di bagian atas panel.

Jebakan umum

GejalaPenyebab & solusi
Aplikasi: connection refused / ENOTFOUNDMemakai URL eksternal/localhost dari dalam container. Pakai URL internal (nama container) lewat referensi.
400 saat menyimpan env: no database "x"Slug salah atau database ada di project lain.
Status error saat membuatTag image tidak ada di Docker Hub, atau port host sudah dipakai. Hapus dan buat ulang.
Aplikasi di server remote tidak bisa konekDatabase selalu di host aoox. Isi port host + firewall, lalu pakai koneksi eksternal di env (tanpa referensi).
Data hilang setelah hapusDihapus dengan purge volume. Restore dari backup yang sudah diunduh/S3 ke database baru.
Belum tersedia
Ganti versi engine dari UI; replika/HA; database di server remote; injeksi env otomatis.

Langkah berikutnya

Ada yang keliru? Edit halaman ini di GitLab ↗