Adding docker for deployment
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
|||||||
|
FROM php:8.2-apache
|
||||||
|
|
||||||
|
# Enable mod_rewrite for clean URLs and .htaccess support
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
# Install PHP extensions needed: mysqli (sig-03), pdo + pdo_mysql (sig-01, sig-02)
|
||||||
|
RUN docker-php-ext-install mysqli pdo pdo_mysql
|
||||||
|
|
||||||
|
# Allow .htaccess overrides in /var/www/html
|
||||||
|
RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
|
||||||
|
|
||||||
|
# Copy all project files into Apache web root
|
||||||
|
COPY . /var/www/html/
|
||||||
|
|
||||||
|
# Fix file permissions
|
||||||
|
RUN chown -R www-data:www-data /var/www/html \
|
||||||
|
&& chmod -R 755 /var/www/html
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
-- ============================================================
|
||||||
|
-- Combined DB init for Docker
|
||||||
|
-- Runs automatically on first `docker compose up`
|
||||||
|
-- Creates: sig_spbu, sig_mapping, sig_bansos
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- sig-01: WebGIS SPBU
|
||||||
|
-- ============================================================
|
||||||
|
CREATE DATABASE IF NOT EXISTS sig_spbu
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
USE sig_spbu;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS spbu (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
kode VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
nama VARCHAR(255) NOT NULL,
|
||||||
|
is_24jam TINYINT(1) NOT NULL DEFAULT 0,
|
||||||
|
latitude DECIMAL(10, 8) NOT NULL,
|
||||||
|
longitude DECIMAL(11, 8) NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
INSERT INTO spbu (kode, nama, is_24jam, latitude, longitude) VALUES
|
||||||
|
('61.701.01', 'SPBU Pertamina Ahmad Yani', 1, -0.02830, 109.34150),
|
||||||
|
('61.701.02', 'SPBU Pertamina Gajah Mada', 0, -0.01970, 109.33490),
|
||||||
|
('61.701.03', 'SPBU Pertamina Tanjungpura', 1, -0.03480, 109.33170),
|
||||||
|
('61.701.04', 'SPBU Pertamina Imam Bonjol', 0, -0.05680, 109.34670),
|
||||||
|
('61.701.05', 'SPBU Pertamina Soekarno-Hatta', 1, -0.06510, 109.35540),
|
||||||
|
('61.701.06', 'SPBU Pertamina Sultan Syarif Abdurrahman',0, -0.01330, 109.32890),
|
||||||
|
('61.701.07', 'SPBU Pertamina Sei Raya Dalam', 1, -0.09420, 109.36800);
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- sig-02: SIG Mapping Tanah & Jalan
|
||||||
|
-- ============================================================
|
||||||
|
CREATE DATABASE IF NOT EXISTS sig_mapping
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
USE sig_mapping;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS tanah (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
nama VARCHAR(150) NOT NULL,
|
||||||
|
pemilik VARCHAR(150) NULL,
|
||||||
|
kategori VARCHAR(80) NULL,
|
||||||
|
deskripsi TEXT NULL,
|
||||||
|
luas DOUBLE NOT NULL DEFAULT 0,
|
||||||
|
keliling DOUBLE NOT NULL DEFAULT 0,
|
||||||
|
warna VARCHAR(20) NOT NULL DEFAULT '#22c55e',
|
||||||
|
geojson JSON NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS jalan (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
nama VARCHAR(150) NOT NULL,
|
||||||
|
jenis VARCHAR(50) NULL,
|
||||||
|
kategori VARCHAR(80) NULL,
|
||||||
|
deskripsi TEXT NULL,
|
||||||
|
panjang DOUBLE NOT NULL DEFAULT 0,
|
||||||
|
warna VARCHAR(20) NOT NULL DEFAULT '#ef4444',
|
||||||
|
geojson JSON NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- sig-03: WebGIS BanSos
|
||||||
|
-- ============================================================
|
||||||
|
CREATE DATABASE IF NOT EXISTS sig_bansos
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
USE sig_bansos;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS religious_centers (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
address TEXT,
|
||||||
|
kas DECIMAL(15,2) DEFAULT 0,
|
||||||
|
latitude DOUBLE NOT NULL,
|
||||||
|
longitude DOUBLE NOT NULL,
|
||||||
|
radius INT DEFAULT 300,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS houses (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
latitude DOUBLE NOT NULL,
|
||||||
|
longitude DOUBLE NOT NULL,
|
||||||
|
address TEXT,
|
||||||
|
rt VARCHAR(10) DEFAULT '',
|
||||||
|
rw VARCHAR(10) DEFAULT '',
|
||||||
|
kelurahan VARCHAR(100) DEFAULT '',
|
||||||
|
status_miskin ENUM('sangat_miskin','miskin','tidak_miskin','') DEFAULT '',
|
||||||
|
jumlah_anggota INT DEFAULT 0,
|
||||||
|
anggota JSON,
|
||||||
|
aid_status ENUM('helped','not_helped','outside') DEFAULT 'outside',
|
||||||
|
has_data TINYINT(1) DEFAULT 0,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS laporan (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
pelapor VARCHAR(150) DEFAULT 'Anonim',
|
||||||
|
deskripsi TEXT NOT NULL,
|
||||||
|
lokasi VARCHAR(255) DEFAULT '',
|
||||||
|
foto_base64 MEDIUMTEXT,
|
||||||
|
status ENUM('baru','ditangani','selesai') DEFAULT 'baru',
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS aid_logs (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
house_id INT NOT NULL,
|
||||||
|
religious_center_id INT DEFAULT 0,
|
||||||
|
status ENUM('helped','reverted') NOT NULL,
|
||||||
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
FOREIGN KEY (house_id) REFERENCES houses(id) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
DB_HOST: db
|
||||||
|
volumes:
|
||||||
|
- .:/var/www/html
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mysql:8.0
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: rootpassword
|
||||||
|
# sig-01, sig-02, sig-03 databases are all created via init SQL below
|
||||||
|
volumes:
|
||||||
|
- db_data:/var/lib/mysql
|
||||||
|
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpassword"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
ports:
|
||||||
|
- "3306:3306" # optional: expose for local tools like TablePlus/DBeaver
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
db_data:
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
// Konfigurasi koneksi database — sesuaikan jika perlu
|
// Konfigurasi koneksi database
|
||||||
define('DB_HOST', 'localhost');
|
// Mendukung environment variable Docker (DB_HOST) maupun hardcoded untuk Laragon
|
||||||
define('DB_NAME', 'sig_spbu');
|
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||||
define('DB_USER', 'root');
|
define('DB_NAME', 'sig_spbu');
|
||||||
define('DB_PASS', '');
|
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||||
|
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||||
define('DB_CHARSET', 'utf8mb4');
|
define('DB_CHARSET', 'utf8mb4');
|
||||||
|
|
||||||
function getDB(): PDO {
|
function getDB(): PDO {
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Koneksi database (PDO).
|
* Koneksi database (PDO).
|
||||||
* Sesuaikan kredensial bila berbeda dari default Laragon.
|
* Mendukung environment variable Docker (DB_HOST) maupun hardcoded untuk Laragon.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const DB_HOST = '127.0.0.1';
|
define('DB_HOST', getenv('DB_HOST') ?: '127.0.0.1');
|
||||||
const DB_PORT = '3306';
|
define('DB_PORT', '3306');
|
||||||
const DB_NAME = 'sig_mapping';
|
define('DB_NAME', 'sig_mapping');
|
||||||
const DB_USER = 'root';
|
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||||
const DB_PASS = '';
|
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||||
|
|
||||||
function db(): PDO
|
function db(): PDO
|
||||||
{
|
{
|
||||||
|
|||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
define('DB_HOST', 'localhost');
|
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||||
define('DB_USER', 'root');
|
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||||
define('DB_PASS', '');
|
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||||
define('DB_NAME', 'sig_bansos');
|
define('DB_NAME', 'sig_bansos');
|
||||||
|
|
||||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user