Files
spota-dev/DOCKER.md
2026-05-02 14:24:25 +07:00

84 lines
2.5 KiB
Markdown

# 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
```powershell
copy .env.example .env
docker compose up -d --build
```
Akses aplikasi:
```text
http://localhost:8080
http://localhost:8080/admin/login.php
http://localhost:8080/dosen/login.php
http://localhost:8080/mahasiswa/login.php
```
## Stop
```powershell
docker compose down
```
## Reset Database
Perintah ini menghapus volume DB dan import ulang dump dari `spota_db`.
```powershell
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_spotadb`
- `spota_konsultasi`
- `spota_doxid`
- `spota_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_URL`
- `DB_USER`
- `DB_PASSWORD`
- `MYSQL_ROOT_PASSWORD`
- `PHP_DISPLAY_ERRORS=0` untuk 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.