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
| Engine | Image (tag default) | Port | Bentuk URL internal |
|---|---|---|---|
| PostgreSQL | postgres:16-alpine | 5432 | postgresql://app:pass@host:5432/<db> |
| MySQL | mysql:8 | 3306 | mysql://app:pass@host:3306/<db> |
| MariaDB | mariadb:11 | 3306 | mysql://app:pass@host:3306/<db> |
| Redis | redis:7-alpine | 6379 | redis://: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
Halaman project → Database baru
Field Keterangan Nama Jadi slug unik (global, bukan per project). Container aoox-db-<slug>, volumeaoox_db_<slug>.Engine postgres / mysql / mariadb / redis. Versi (tag image) Tag Docker Hub. Kosong = default di tabel atas. Contoh: 17,8.4,7.2.Port host Opsional. Isi hanya kalau perlu koneksi dari luar Docker (laptop, server remote). Aplikasi di host aoox tidak membutuhkannya. Batas CPU / memori Opsional; bisa diubah nanti. Tunggu status running
- 01creatingpull image, buat volume & container
- 02runningsiap dipakai; kredensial tersedia
- 03stoppedcontainer berhenti, data tetap
- 04errorprovisioning gagal — lihat pesan
Provisioning berjalan di latar (pull image bisa lama); halaman menyegarkan otomatis selama
creating.Hubungkan ke aplikasi
Di env aplikasi (project yang sama), rujuk dengan referensi — bukan menyalin password:
Env aplikasiDATABASE_URL=${{database.app-db.url}}Deploy (atau rollback) agar container aplikasi baru mendapat nilainya. Bentuk lain (
host,port,username, …) ada di Environment variables.
Koneksi
| Jenis | Host | Siapa yang bisa pakai |
|---|---|---|
| Koneksi internal | aoox-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.
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
| Aksi | Di mana | Catatan |
|---|---|---|
| Stop / Start | Panel database | Container berhenti; data di volume tetap. Aplikasi yang terhubung akan error sampai start lagi. |
| Batas sumber daya | Kartu Batas sumber daya | Berlaku langsung; mencabut batas = container dibuat ulang (restart singkat). |
| Ganti versi (tag) | — | Belum ada dari UI. Buat database baru, restore backup ke sana. |
| Konfigurasi engine | Tab Mount | File mount ke path config; container di-provision ulang. |
| Hapus | Panel database | Dengan 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
| Gejala | Penyebab & solusi |
|---|---|
| Aplikasi: connection refused / ENOTFOUND | Memakai 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 membuat | Tag image tidak ada di Docker Hub, atau port host sudah dipakai. Hapus dan buat ulang. |
| Aplikasi di server remote tidak bisa konek | Database selalu di host aoox. Isi port host + firewall, lalu pakai koneksi eksternal di env (tanpa referensi). |
| Data hilang setelah hapus | Dihapus dengan purge volume. Restore dari backup yang sudah diunduh/S3 ke database baru. |
Langkah berikutnya
Ada yang keliru? Edit halaman ini di GitLab ↗