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

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_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.