DocsInfrastruktur
Registry
Registry lokal tempat image hasil build disimpan (prasyarat deploy), registry eksternal, dan pemeliharaan disk.
- Registry lokal
- Wajib — tempat image hasil build
- Registry eksternal
- Kredensial untuk registry lain
- Pemeliharaan
- Retensi per aplikasi + cleanup malam
Peran registry dalam deploy
- 01buildimage dibuat oleh daemon Docker
- 02push→ localhost:5000/<project>/<app>:<id>
- 03runcontainer dibuat dari image itu
- 04rollbackimage lama ditarik lagi dari registry
Setiap deploy mem-push image ke registry lokal dan rollback menariknya kembali dari sana. Karena itu registry harus di-provision sebelum deploy pertama — tanpa itu deploy gagal dengan pesan No self-hosted registry. Aplikasi di server remote tidak memakai registry (image tetap di daemon server).
Registry lokal
Menu Registry → tab Registry lokal → Provision registry (owner)
aoox menjalankan
registry:3sebagai containeraoox-registrydengan autentikasi htpasswd, data di volumeaoox_registry_data, dan penghapusan tag diaktifkan. Kartu menampilkan status Registry siap, container, dan URL.Simpan kredensial yang ditampilkan sekali
Username
aooxdan password acak hanya tampil sekali — klik Sudah saya simpan setelah mencatatnya. Deploy dari dashboard tidak membutuhkannya; kredensial ini untuk push manual dari mesin lain.
docker login localhost:5000 -u aoox
docker tag myimage:latest localhost:5000/tools/myimage:1.0
docker push localhost:5000/tools/myimage:1.0| Env (.env.dist) | Default | Keterangan |
|---|---|---|
REGISTRY_PORT | 5000 | Port host registry. |
REGISTRY_PUBLIC_HOST | localhost | Host yang dipakai docker push. localhost dikecualikan dari aturan insecure-registry Docker; host lain butuh TLS (reverse proxy) atau entri insecure-registries di daemon.json setiap daemon yang mem-push. |
Melihat & membersihkan isi
- Tab Registry lokal menampilkan repository → tag beserta digest dan ukuran. Nama repository =
<project-slug>/<app-slug>. - Hapus tag = hapus manifest. Tag lain yang menunjuk digest sama ikut hilang — UI memperingatkan.
- Garbage collect (owner) mengembalikan ruang disk setelah tag dihapus — dijalankan di dalam container registry yang sedang berjalan; ada mode dry run untuk melihat apa yang akan dihapus.
- Menghapus tag yang masih dipakai container berjalan tidak menghentikannya, tapi rollback ke versi itu tidak lagi bisa.
- Hapus registry (owner) menghentikan container; volume data ditanyakan. Deploy tidak bisa dilakukan sampai di-provision lagi.
Pemeliharaan disk
Supaya disk tidak penuh oleh image lama, aoox punya cleanup otomatis yang berjalan tiap malam pukul 04:30 (UTC) dan bisa dipicu manual.
| Yang dibersihkan | Aturan |
|---|---|
| Deployment lama per aplikasi | Field Riwayat deployment di Pengaturan aplikasi (default 10): deployment sukses di luar jumlah ini dipangkas, image-nya dihapus lokal dan dari registry. Image yang sedang dipakai tidak pernah disentuh. |
| Deployment gagal/queued | Baris (log saja) lebih tua dari 30 hari dihapus. |
| Dangling image & build cache | Dihapus di daemon lokal — tidak menyentuh image aplikasi. |
| Registry | Garbage collect dijalankan setelah pemangkasan. |
Settings → Disk Docker
Kartu menampilkan pemakaian image, container, volume, build cache, berapa yang bisa direklamasi, jumlah deployment yang bisa dipangkas, dan laporan cleanup terakhir.
Bersihkan sekarang (owner)
Menjalankan siklus yang sama secara on-demand. Laporan: deployment dipangkas, image dihapus, byte direklamasi, status GC registry, dan error bila ada.
Registry eksternal
Tab Registry eksternal → Tambah registry (owner/admin): daftarkan kredensial Docker Hub, GHCR, GitLab, dsb.
| Field | Contoh |
|---|---|
| Nama | GHCR perusahaan |
| URL | ghcr.io |
| Username / Password / token | Token dengan akses baca (dan tulis bila perlu); disimpan terenkripsi |
| Image prefix | Opsional, mis. myorg → image dirujuk sebagai <url>/<prefix>/<app> |
Jebakan umum
| Gejala | Penyebab & solusi |
|---|---|
| Deploy gagal: No self-hosted registry | Provision registry lokal dulu. |
| Push manual: http: server gave HTTP response to HTTPS client | REGISTRY_PUBLIC_HOST bukan localhost tanpa TLS. Tambahkan ke insecure-registries atau pasang reverse proxy TLS. |
| Disk tetap penuh setelah hapus tag | Jalankan Garbage collect, atau Bersihkan sekarang di Settings → Disk Docker. |
| Rollback gagal: image not found | Tag sudah dipangkas oleh retensi atau dihapus manual. Deploy ulang commit tersebut. |
| Kartu Registry: Docker tidak terjangkau | DOCKER_GID salah atau socket tidak di-mount — lihat Troubleshooting. |
Langkah berikutnya
Ada yang keliru? Edit halaman ini di GitLab ↗