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
|
||||
// Konfigurasi koneksi database — sesuaikan jika perlu
|
||||
define('DB_HOST', 'localhost');
|
||||
define('DB_NAME', 'sig_spbu');
|
||||
define('DB_USER', 'root');
|
||||
define('DB_PASS', '');
|
||||
// Konfigurasi koneksi database
|
||||
// Mendukung environment variable Docker (DB_HOST) maupun hardcoded untuk Laragon
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_NAME', 'sig_spbu');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||
define('DB_CHARSET', 'utf8mb4');
|
||||
|
||||
function getDB(): PDO {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* 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';
|
||||
const DB_PORT = '3306';
|
||||
const DB_NAME = 'sig_mapping';
|
||||
const DB_USER = 'root';
|
||||
const DB_PASS = '';
|
||||
define('DB_HOST', getenv('DB_HOST') ?: '127.0.0.1');
|
||||
define('DB_PORT', '3306');
|
||||
define('DB_NAME', 'sig_mapping');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||
|
||||
function db(): PDO
|
||||
{
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
define('DB_HOST', 'localhost');
|
||||
define('DB_USER', 'root');
|
||||
define('DB_PASS', '');
|
||||
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
|
||||
define('DB_USER', getenv('DB_USER') ?: 'root');
|
||||
define('DB_PASS', getenv('DB_PASS') ?: '');
|
||||
define('DB_NAME', 'sig_bansos');
|
||||
|
||||
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
|
||||
|
||||
Reference in New Issue
Block a user