2.5 KiB
SPOTA Docker
Setup ini menjalankan aplikasi legacy SPOTA dengan PHP Apache dan MySQL 8 dalam satu docker-compose.yml.
docker-compose.yml dibuat aman untuk Coolify: app tidak bind host port secara langsung dan hanya expose port internal 80.
Untuk pemakaian lokal, Docker otomatis membaca docker-compose.override.yml yang menambahkan port host dan bind mount lokal.
Jalankan Lokal
copy .env.example .env
docker compose up -d --build
Akses aplikasi:
http://localhost:8080
http://localhost:8080/admin/login.php
http://localhost:8080/dosen/login.php
http://localhost:8080/mahasiswa/login.php
Stop
docker compose down
Reset Database
Perintah ini menghapus volume DB dan import ulang dump dari spota_db.
docker compose down -v
docker compose up -d
Database
Dump diambil dari folder spota_db yang dibundel ke image database saat volume DB pertama kali dibuat.
Database yang di-import:
spota_spotadbspota_konsultasispota_doxidspota_rek_artikel
Volume/Data
Folder berikut di-mount dari host supaya data upload tidak masuk image:
./files:/var/www/html/files./img:/var/www/html/img
Bind mount tersebut hanya aktif untuk local development melalui docker-compose.override.yml.
Di Coolify, compose utama memakai named volume agar tidak bentrok dengan host port/path handling Coolify.
Bootstrap database tidak lagi bergantung pada bind mount folder host ke container DB; dump dan script init dibawa oleh image database.
Opsional, upload berkas bisa dipindah ke lokasi di luar folder project dengan environment variable:
FILES_STORAGE_PATH=/absolute/path/to/files
Jika FILES_STORAGE_PATH tidak diisi, aplikasi tetap memakai default files/ di dalam document root.
Folder target akan dibuat otomatis saat upload pertama.
Jika path tersebut berada di luar /var/www/html/files, sesuaikan juga volume mount container ke lokasi yang sama.
Untuk Coolify, jadikan path ini persistent storage.
Coolify
Sesuaikan environment berikut di Coolify:
APP_URLDB_USERDB_PASSWORDMYSQL_ROOT_PASSWORDPHP_DISPLAY_ERRORS=0untuk production
Port internal app adalah 80. Database internal memakai service name db pada port 3306.
Jangan publish 8080:80 di compose utama untuk Coolify, karena Coolify akan mengurus routing sendiri dan bind host port bisa bentrok dengan resource lain.
Jangan tambahkan persistent storage ke /docker-entrypoint-initdb.d atau /spota_db pada service DB.