chore: prepare docker webgis deployment
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# Deployment Docker
|
||||
|
||||
Panduan ini menjadi referensi utama untuk menjalankan WebGIS Poverty Mapping. XAMPP tidak lagi menjadi jalur deploy utama; gunakan XAMPP hanya sebagai fallback legacy.
|
||||
|
||||
## Runtime
|
||||
|
||||
- PHP 8.2 Apache dari `Dockerfile` root repository.
|
||||
- MariaDB 11.4 dari `docker-compose.yml`.
|
||||
- Database aplikasi final: `db_webgis`.
|
||||
- Database project kelas `01/`: `db_webgis_01`.
|
||||
- Aplikasi final tersedia di path `/WebgisPovertyMapping/`.
|
||||
|
||||
## Struktur Docker
|
||||
|
||||
File Docker berada di root repository `webgis/`:
|
||||
|
||||
```text
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
docker-compose.local.yml
|
||||
.env.example
|
||||
docker/apache-webgis.conf
|
||||
```
|
||||
|
||||
Service:
|
||||
|
||||
- `app`: Apache + PHP, melayani root landing page, `01/`, dan `WebgisPovertyMapping/`.
|
||||
- `db`: MariaDB, private untuk service `app`.
|
||||
|
||||
## Local Development
|
||||
|
||||
Jalankan dari root repository:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
docker compose -f docker-compose.yml -f docker-compose.local.yml up --build -d
|
||||
```
|
||||
|
||||
Buka:
|
||||
|
||||
```text
|
||||
http://localhost:8080/
|
||||
http://localhost:8080/WebgisPovertyMapping/
|
||||
```
|
||||
|
||||
Jika port `8080` sudah dipakai, tambahkan di `.env`:
|
||||
|
||||
```env
|
||||
APP_PORT=8081
|
||||
```
|
||||
|
||||
Lalu jalankan ulang compose lokal.
|
||||
|
||||
## Database Init
|
||||
|
||||
MariaDB menjalankan file berikut hanya saat volume database masih kosong:
|
||||
|
||||
```text
|
||||
01/setup_database.sql
|
||||
WebgisPovertyMapping/setup_database.sql
|
||||
```
|
||||
|
||||
Untuk reset database lokal:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.yml -f docker-compose.local.yml down -v
|
||||
docker compose -f docker-compose.yml -f docker-compose.local.yml up --build -d
|
||||
```
|
||||
|
||||
## Production Di Coolify
|
||||
|
||||
Gunakan `docker-compose.yml` saja.
|
||||
|
||||
1. Push root repository `webgis/` ke Git provider.
|
||||
2. Buat resource baru di Coolify dari repository tersebut.
|
||||
3. Pilih deployment type `Docker Compose`.
|
||||
4. Set compose file ke `docker-compose.yml`.
|
||||
5. Assign domain ke service `app`, misalnya `https://ifuntanhub.dev`.
|
||||
6. Set environment variable:
|
||||
|
||||
```env
|
||||
MARIADB_ROOT_PASSWORD=isi-password-kuat
|
||||
```
|
||||
|
||||
`docker-compose.yml` production hanya memakai `expose: 80`. Jangan tambahkan `ports:` untuk production, karena routing publik harus lewat reverse proxy Coolify.
|
||||
|
||||
## Reverse Proxy
|
||||
|
||||
Coolify/reverse proxy menerima traffic publik dari domain dan meneruskannya ke container `app` port `80`.
|
||||
|
||||
Alur request:
|
||||
|
||||
```text
|
||||
https://ifuntanhub.dev -> Coolify reverse proxy -> app:80 -> /WebgisPovertyMapping/
|
||||
```
|
||||
|
||||
Header `X-Forwarded-Proto: https` dipakai oleh aplikasi untuk mengenali HTTPS saat menentukan secure session cookie.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- App tidak bisa dibuka lokal: pastikan memakai `docker-compose.local.yml`, bukan hanya `docker-compose.yml`.
|
||||
- DB gagal terhubung: cek env `MARIADB_ROOT_PASSWORD`, service `db`, dan healthcheck MariaDB.
|
||||
- SQL init tidak berubah setelah edit schema: reset volume database; MariaDB hanya menjalankan init script saat volume kosong.
|
||||
- Domain Coolify tidak masuk ke app: pastikan domain diassign ke service `app` dan container port `80`.
|
||||
- Peta/chart/font gagal load: cek akses internet ke CDN dan tile provider eksternal.
|
||||
Reference in New Issue
Block a user