Compare commits

...

2 Commits

Author SHA1 Message Date
Nayyara0412 8e136944bb Add Docker Compose deployment setup 2026-06-11 14:32:07 +07:00
Nayyara0412 af2ad35c8c Prepare WebGIS project for Docker deployment 2026-06-11 14:32:07 +07:00
12 changed files with 199 additions and 19 deletions
+14
View File
@@ -0,0 +1,14 @@
.git
.gitignore
.codex
.agents
.env
*.rar
*.zip
*.7z
*.tar
*.gz
node_modules
vendor
*.log
Thumbs.db
+1
View File
@@ -0,0 +1 @@
DB_ROOT_PASSWORD=change_this_password
+4 -1
View File
@@ -1,7 +1,8 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
@@ -12,3 +13,5 @@ RUN mkdir -p \
/var/www/html/webgis-v3/uploads/bukti_bantuan \
/var/www/html/webgis-v3/uploads/foto_laporan \
&& chown -R www-data:www-data /var/www/html
EXPOSE 80
+31
View File
@@ -0,0 +1,31 @@
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- database
environment:
DB_HOST: database
DB_USER: root
DB_PASSWORD: ${DB_ROOT_PASSWORD:-rootpassword}
DB_NAME: webgis_kemiskinan
SPBU_DB_NAME: db_spbu
WEBGIS02_DB_NAME: webgis_db
DB_CHAR: utf8mb4
expose:
- "80"
restart: unless-stopped
database:
image: mariadb:10.11
environment:
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-rootpassword}
volumes:
- database_data:/var/lib/mysql
- ./setup_databases.sql:/docker-entrypoint-initdb.d/01-combine-webgis.sql:ro
- ./webgis-v3/sql/schema.sql:/docker-entrypoint-initdb.d/02-webgis-v3.sql:ro
restart: unless-stopped
volumes:
database_data:
+14
View File
@@ -0,0 +1,14 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
RUN mkdir -p \
/var/www/html/uploads/bukti_bantuan \
/var/www/html/uploads/foto_laporan \
&& chown -R www-data:www-data /var/www/html
EXPOSE 80
+11
View File
@@ -0,0 +1,11 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
RUN chown -R www-data:www-data /var/www/html
EXPOSE 80
+29 -6
View File
@@ -1,13 +1,36 @@
<?php
$host = getenv('DB_HOST') ?: '127.0.0.1';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') !== false ? getenv('DB_PASSWORD') : '';
$db = getenv('DB_NAME') ?: 'db_spbu';
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect($host, $user, $pass, $db);
function env_first(array $keys, $default = '') {
foreach ($keys as $key) {
$value = getenv($key);
if ($value !== false && $value !== '') return $value;
}
return $default;
}
$hosts = array_filter(array_unique([
env_first(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST']),
'mysql',
'mariadb',
'db',
'database',
'host.docker.internal',
'127.0.0.1',
]));
$user = env_first(['DB_USER', 'MYSQL_USER', 'MARIADB_USER'], 'root');
$pass = env_first(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD'], '');
$db = env_first(['SPBU_DB_NAME', 'DB_NAME_SPBU', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE'], 'db_spbu');
$conn = false;
foreach ($hosts as $host) {
$conn = mysqli_connect($host, $user, $pass, $db);
if ($conn) break;
}
if (!$conn) {
die("Koneksi database gagal: " . mysqli_connect_error());
die("Koneksi database gagal. Pastikan MySQL service berjalan, environment DB_HOST/DB_USER/DB_PASSWORD benar, dan database '$db' sudah diimport. Error: " . mysqli_connect_error());
}
mysqli_set_charset($conn, 'utf8mb4');
+15
View File
@@ -0,0 +1,15 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
RUN mkdir -p \
/var/www/html/uploads/jalan \
/var/www/html/uploads/parsil \
/var/www/html/uploads/jalan_rusak \
&& chown -R www-data:www-data /var/www/html
EXPOSE 80
+29 -6
View File
@@ -1,15 +1,38 @@
<?php
$host = getenv('DB_HOST') ?: '127.0.0.1';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') !== false ? getenv('DB_PASSWORD') : '';
$db = getenv('DB_NAME') ?: 'webgis_db';
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect($host, $user, $pass, $db);
function env_first(array $keys, $default = '') {
foreach ($keys as $key) {
$value = getenv($key);
if ($value !== false && $value !== '') return $value;
}
return $default;
}
$hosts = array_filter(array_unique([
env_first(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST']),
'mysql',
'mariadb',
'db',
'database',
'host.docker.internal',
'127.0.0.1',
]));
$user = env_first(['DB_USER', 'MYSQL_USER', 'MARIADB_USER'], 'root');
$pass = env_first(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD'], '');
$db = env_first(['WEBGIS02_DB_NAME', 'DB_NAME_WEBGIS02', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE'], 'webgis_db');
$conn = false;
foreach ($hosts as $host) {
$conn = mysqli_connect($host, $user, $pass, $db);
if ($conn) break;
}
if (!$conn) {
die(json_encode([
'status' => 'error',
'message' => 'Koneksi database gagal: ' . mysqli_connect_error()
'message' => "Koneksi database gagal. Pastikan MySQL service berjalan, environment DB_HOST/DB_USER/DB_PASSWORD benar, dan database '$db' sudah diimport. Error: " . mysqli_connect_error()
]));
}
+11
View File
@@ -0,0 +1,11 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
RUN chown -R www-data:www-data /var/www/html
EXPOSE 80
+11
View File
@@ -0,0 +1,11 @@
FROM php:8.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite \
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
COPY . /var/www/html/
RUN chown -R www-data:www-data /var/www/html
EXPOSE 80
+29 -6
View File
@@ -1,13 +1,36 @@
<?php
$host = getenv('DB_HOST') ?: '127.0.0.1';
$user = getenv('DB_USER') ?: 'root';
$pass = getenv('DB_PASSWORD') !== false ? getenv('DB_PASSWORD') : '';
$db = getenv('DB_NAME') ?: 'db_spbu';
mysqli_report(MYSQLI_REPORT_OFF);
$conn = mysqli_connect($host, $user, $pass, $db);
function env_first(array $keys, $default = '') {
foreach ($keys as $key) {
$value = getenv($key);
if ($value !== false && $value !== '') return $value;
}
return $default;
}
$hosts = array_filter(array_unique([
env_first(['DB_HOST', 'MYSQL_HOST', 'MARIADB_HOST']),
'mysql',
'mariadb',
'db',
'database',
'host.docker.internal',
'127.0.0.1',
]));
$user = env_first(['DB_USER', 'MYSQL_USER', 'MARIADB_USER'], 'root');
$pass = env_first(['DB_PASSWORD', 'MYSQL_PASSWORD', 'MARIADB_PASSWORD'], '');
$db = env_first(['SPBU_DB_NAME', 'DB_NAME_SPBU', 'DB_NAME', 'MYSQL_DATABASE', 'MARIADB_DATABASE'], 'db_spbu');
$conn = false;
foreach ($hosts as $host) {
$conn = mysqli_connect($host, $user, $pass, $db);
if ($conn) break;
}
if (!$conn) {
die("Koneksi database gagal: " . mysqli_connect_error());
die("Koneksi database gagal. Pastikan MySQL service berjalan, environment DB_HOST/DB_USER/DB_PASSWORD benar, dan database '$db' sudah diimport. Error: " . mysqli_connect_error());
}
mysqli_set_charset($conn, 'utf8mb4');