Project ini menggunakan Docker Compose terpusat untuk menjalankan Laravel App, Queue Worker, MySQL Database, dan ML Service secara bersamaan.
- Docker terinstal di mesin Anda.
- Docker Compose terinstal.
File docker-compose.yml utama dirancang untuk environment production di mana port tidak diekspos langsung ke host (agar bisa berjalan dengan aman di balik proxy). Oleh karena itu, kita membutuhkan file tambahan untuk pengaturan environment lokal.
- Buat file
.env.dockerdengan menyalin file contoh yang telah disediakan:cp .env.docker.example .env.docker
- Buat file
docker-compose.override.ymluntuk mode development (berfungsi untuk mengekspos port aplikasi ke laptop Anda):Secara default, override ini akan membuka akses aplikasi web di portcp docker-compose.override.yml.example docker-compose.override.yml
8000, ML service di8080, dan Database di3306atau3309sesuai konfigurasi.
Setelah environment siap, Anda dapat mulai membangun dan menjalankan semua service docker:
# Menjalankan container (tambahkan --build jika baru pertama kali, arsitektur berubah, atau ada pembaruan package)
docker-compose up -d --buildSetelah container berhasil berjalan, database MySQL masih dalam keadaan kosong. Jalankan perintah migrasi tabel di dalam container aplikasi:
docker-compose exec app php artisan migrateJika Anda membutuhkan data awal (dummy), tambahkan parameter seed:
docker-compose exec app php artisan migrate --seed- Aplikasi Web: Buka
http://localhost:8000di browser komputer Anda. - ML Service: Dapat diakses di
http://localhost:8080.
- Host Database (.env.docker): Jangan gunakan
127.0.0.1ataulocalhostsebagaiDB_HOST. Karena berjalan di network Docker, gunakan hostnamedb. - ML Service URL (.env.docker): Untuk komunikasi internal antar container (Laravel ke ML Service), wajib menggunakan hostname container. Pastikan memiliki baris ini:
ML_SERVICE_BASE_URL=http://unity_ml_service:8080 - Persistensi Data (Volume): Direktori database dan source code telah di-mount. Perubahan kode Anda di luar Docker akan langsung terbaca ke dalam container. Data MySQL pun tidak akan terhapus apabila Anda mematikan container (
docker-compose down). - Queue Worker: Background job untuk Queue di-handle oleh container tersendiri (
unity_worker). Jika Anda mengubah baris kode yang dieksekusi oleh Job (sepertiRunStuntingPrediction), worker harus dimuat ulang:docker-compose restart worker
- Abaikan File di Git: File konfigurasi environment utama
.env.dockerdan pengaturan port lokaldocker-compose.override.ymltelah dimasukkan ke dalam.gitignoresehingga pengaturan personal Anda tidak ikut masuk ke version control.