From 980017464b0d2d9b57e41c27909de00af6b25747 Mon Sep 17 00:00:00 2001 From: Araya's Project <119692205+Araayaaa@users.noreply.github.com> Date: Wed, 10 Jun 2026 19:41:20 +0700 Subject: [PATCH] Adding docker for deployment --- Dockerfile | 17 +++++ database/init.sql | 127 +++++++++++++++++++++++++++++++++++++ docker-compose.yml | 33 ++++++++++ sig-01/config/database.php | 11 ++-- sig-02/config/database.php | 12 ++-- sig-03/koneksi.php | 6 +- 6 files changed, 192 insertions(+), 14 deletions(-) create mode 100644 Dockerfile create mode 100644 database/init.sql create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..330c6b3 --- /dev/null +++ b/Dockerfile @@ -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 diff --git a/database/init.sql b/database/init.sql new file mode 100644 index 0000000..1ca8c02 --- /dev/null +++ b/database/init.sql @@ -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; diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b484189 --- /dev/null +++ b/docker-compose.yml @@ -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: diff --git a/sig-01/config/database.php b/sig-01/config/database.php index 9431b86..162b4b3 100644 --- a/sig-01/config/database.php +++ b/sig-01/config/database.php @@ -1,9 +1,10 @@