# Panduan Deployment Docker - web-antrean Panduan ini berisi langkah-langkah untuk menjalankan aplikasi `web-antrean` (Nuxt 3) menggunakan Docker & Docker Compose. --- ## 📦 Prasyarat (Prerequisites) Sebelum memulai, pastikan Anda telah menginstal: - **Docker Desktop** (atau Docker Engine di Linux) - **Docker Compose** (biasanya otomatis terinstal dengan Docker Desktop) --- ## 🚀 Quick Start (Mulai Cepat) ### 1. Siapkan File `.env` Pastikan file `.env` sudah ada di root folder `web-antrean` dengan konfigurasi yang benar. Anda bisa menyalin dari template yang disediakan: ```bash cp .env.docker.example .env ``` > [!IMPORTANT] > Pastikan variabel `HOST` diatur ke `0.0.0.0` agar aplikasi dapat menerima request dari luar container Docker. > Sesuaikan `AUTH_ORIGIN` dan `POST_LOGOUT_REDIRECT_URI` dengan alamat/domain server Anda (misal: `http://10.10.150.175:3000`). ### 2. Bangun dan Jalankan Container Jalankan perintah berikut di terminal untuk melakukan build image sekaligus menjalankan container di background: ```bash docker-compose up -d --build ``` ### 3. Akses Aplikasi Setelah container berhasil berjalan, aplikasi dapat diakses di browser melalui: - **http://localhost:3000** (atau IP server Anda, misal: **http://10.10.150.175:3000**) --- ## 🔧 Perintah Docker yang Sering Digunakan (Useful Commands) ### Menjalankan Container (Jalankan di background) ```bash docker-compose up -d ``` ### Mematikan Container ```bash docker-compose down ``` ### Membangun Ulang & Menjalankan Ulang (Jika ada perubahan kode) ```bash docker-compose up -d --build ``` ### Melihat Log Aplikasi secara Real-time ```bash docker-compose logs -f web-antrean ``` ### Masuk ke Terminal di Dalam Container ```bash docker exec -it web-antrean sh ``` --- ## 💾 Persistensi Database (SQLite) Aplikasi `web-antrean` menggunakan `better-sqlite3` untuk menyimpan data sinkronisasi pengguna di `/app/data/users.db`. Agar data ini tidak hilang saat container dihapus atau dibangun ulang, kami menggunakan **Volume Mounting** di `docker-compose.yml`: ```yaml volumes: - ./data:/app/data ``` Ini akan otomatis memetakan folder local `./data` di host server Anda ke folder `/app/data` di dalam container. File database Anda akan tersimpan dengan aman di folder local `./data`. --- ## 🔍 Troubleshooting (Penyelesaian Masalah) ### 1. Masalah dengan Native Module compilation (`better-sqlite3`) Jika image gagal dibangun karena error kompilasi C/C++, Dockerfile kami telah dikonfigurasi menggunakan **multi-stage build** dengan base image `node:20-alpine` dan menginstal package compiler (`make`, `g++`, `gcc`, `python3`) di builder stage. Ini menjamin proses build aman dan hasil image final tetap berukuran kecil (~150MB - 200MB). ### 2. Cek Status Container dan Health Check Container ini dilengkapi dengan health check otomatis. Anda bisa mengecek statusnya dengan: ```bash docker ps ``` Jika statusnya `Up (healthy)`, berarti server Nuxt Anda telah siap dan dapat diakses. ### 3. Hapus Cache Docker jika Mengalami Error Aneh ```bash docker-compose down --rmi all --volumes ``` --- ## 🛡️ Catatan Keamanan - Jangan pernah meng-commit file `.env` ke Git repository. - Selalu gunakan `NUXT_AUTH_SECRET` yang aman dan unik untuk setiap environment (Development/Production).