Deployment¶
Overview¶
Setelah dokumentasi selesai ditulis, langkah berikutnya adalah mempublikasikan website agar dapat diakses oleh pengguna.
Pada panduan ini, website dijalankan menggunakan NGINX Container. Image nginx-image hanya berperan sebagai runtime, sedangkan konten website disediakan secara terpisah. Dengan pendekatan ini, image tetap bersifat generik dan dapat digunakan untuk berbagai jenis static website tanpa perlu membangun ulang image setiap kali konten berubah.
Static Website
(MkDocs / Hugo / React / HTML)
β
βββββββββββββββΌββββββββββββββ
β β β
βΌ βΌ βΌ
Local Disk Object Storage NFS
β β β
βββββββββββββββΌββββββββββββββ
β
βΌ
nginx-image
β
βΌ
Browser
Pada implementasi dalam handbook ini, static website berasal dari hasil build MkDocs (site/) yang disimpan pada Local Disk dan di-mount ke dalam container menggunakan bind mount. Namun pendekatan yang sama dapat diterapkan apabila konten website disimpan pada NFS, NAS, maupun Object Storage.
Best Practice
Pisahkan runtime dan content. Image bertanggung jawab menyediakan web server, sedangkan website dikelola secara terpisah sehingga perubahan konten tidak memerlukan proses build image kembali.
Deployment Architecture¶
Implementasi deployment pada panduan ini menggunakan hasil build MkDocs sebagai sumber static website.
DevOps Handbook
(MkDocs Project)
β
mkdocs build
β
βΌ
site/
β
β Bind Mount
βΌ
/var/www/html
β
βΌ
localhost/nginx-image:1.0
β
βΌ
Podman Container
β
βΌ
Web Browser
Deployment Workflow¶
Secara umum proses deployment terdiri dari beberapa tahapan.
Markdown Files
β
βΌ
mkdocs build
β
βΌ
site/
β
βΌ
Run Container
β
βΌ
NGINX
β
βΌ
Browser
Build the Website¶
Bangun website statis menggunakan perintah berikut.
Apabila berhasil, MkDocs akan membuat direktori site/.
Direktori site/ berisi seluruh file HTML, CSS, JavaScript, gambar, dan aset lain yang dihasilkan oleh MkDocs.
Sebelum melakukan deployment, sinkronkan seluruh isi direktori site/ ke lokasi yang akan digunakan sebagai sumber static website.
Sebagai contoh, pada implementasi ini hasil build disalin ke repository deployment.
Setelah proses sinkronisasi selesai, struktur repository deployment akan menjadi seperti berikut.
devops-handbook-site/
βββ CONFIG
βββ PROJECT
βββ VERSION
βββ run.sh
βββ stop.sh
βββ README.md
βββ site/
βββ index.html
βββ assets/
βββ css/
βββ images/
βββ js/
βββ search/
Direktori site/ pada repository deployment inilah yang nantinya di-mount ke dalam container sebagai document root NGINX.
Engineering Notes
Pada panduan ini, hasil build MkDocs disimpan pada repository deployment untuk memudahkan proses deployment menggunakan bind mount. Namun pendekatan yang sama dapat diterapkan pada media penyimpanan lain seperti NFS, NAS, maupun Object Storage. Yang terpenting adalah runtime (nginx-image) memiliki akses ke direktori yang berisi static website.
Best Practice
Pisahkan source dokumentasi dan hasil build. Repository MkDocs digunakan untuk menyimpan source dokumentasi, sedangkan lokasi deployment hanya menyimpan static website hasil proses build. Pendekatan ini membuat proses deployment lebih fleksibel dan memudahkan integrasi dengan media penyimpanan lain maupun pipeline CI/CD.
Deployment Project¶
Deployment dilakukan menggunakan repository terpisah yang bertugas menjalankan container.
devops-handbook-site/
βββ CONFIG
βββ PROJECT
βββ VERSION
βββ run.sh
βββ stop.sh
βββ README.md
Repository ini tidak membangun container image.
Sebaliknya, deployment menggunakan image runtime yang telah dibuat sebelumnya.
Configure Deployment¶
Lokasi static website dikonfigurasi melalui file CONFIG.
Keterangan.
| Parameter | Description |
|---|---|
IMAGE_NAME |
Runtime image yang digunakan untuk menjalankan website. |
WEB_ROOT |
Lokasi static website pada host yang akan di-mount ke container. |
Pada implementasi ini, WEB_ROOT menunjuk ke direktori hasil build MkDocs.
Run the Container¶
Jalankan deployment.
Container akan melakukan bind mount.
Host
-------------------------------------
~/git/devops-handbook-site/site
β
βΌ
Container
-------------------------------------
/var/www/html
NGINX kemudian menyajikan seluruh file yang berada pada direktori tersebut.
Verification¶
Pastikan container berhasil dijalankan.
Pastikan volume berhasil di-mount.
Pastikan document root berisi static website.
Contoh output.
Selanjutnya akses website menggunakan browser.
Verification
Deployment dinyatakan berhasil apabila:
- Container berhasil dijalankan.
- Direktori
site/berhasil di-mount ke/var/www/html. - File
index.htmltersedia pada document root. - Website dapat diakses melalui browser.
References¶
Dokumentasi resmi.
Summary¶
Pada bab ini kita telah mempelajari:
- Konsep pemisahan antara runtime dan content.
- Arsitektur deployment menggunakan NGINX Container.
- Membangun static website menggunakan
mkdocs build. - Menjalankan website menggunakan bind mount.
- Memverifikasi hasil deployment.
Next Steps¶
Pada bab berikutnya kita akan membahas berbagai praktik terbaik dalam mengelola dokumentasi menggunakan MkDocs, mulai dari struktur direktori, penamaan halaman, pengelolaan repository, hingga standar penulisan dokumentasi.