feat: Introduce Docker containerization and revamp the resident movement report to include both incoming and outgoing population data.
This commit is contained in:
18
.dockerignore
Normal file
18
.dockerignore
Normal file
@@ -0,0 +1,18 @@
|
||||
# Docker ignore file
|
||||
.git
|
||||
.gitignore
|
||||
node_modules
|
||||
npm-debug.log
|
||||
yarn-debug.log
|
||||
yarn-error.log
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
.vscode
|
||||
.idea
|
||||
*.log
|
||||
php_server.pid
|
||||
php_server.log
|
||||
.env
|
||||
docker-compose.override.yml
|
||||
*.md
|
||||
README*
|
||||
38
Dockerfile
Normal file
38
Dockerfile
Normal file
@@ -0,0 +1,38 @@
|
||||
FROM php:8.2-apache
|
||||
|
||||
# Install necessary PHP extensions and tools
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpng-dev \
|
||||
libjpeg-dev \
|
||||
libfreetype6-dev \
|
||||
libzip-dev \
|
||||
zip \
|
||||
unzip \
|
||||
curl \
|
||||
git \
|
||||
mariadb-client \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) gd \
|
||||
&& docker-php-ext-install mysqli pdo pdo_mysql zip \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Enable Apache rewrite module
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /var/www/html
|
||||
|
||||
# Copy application files
|
||||
COPY . /var/www/html/
|
||||
|
||||
# Set proper permissions
|
||||
RUN chown -R www-data:www-data /var/www/html \
|
||||
&& chmod -R 755 /var/www/html
|
||||
|
||||
# Update koneksi.php to use environment variables
|
||||
RUN sed -i 's/\$koneksi = new mysqli ("localhost","sidak_user","sidak_pass","data_penduduk");/\$db_host = getenv("DB_HOST") ?: "localhost";\n\$db_user = getenv("DB_USER") ?: "sidak_user";\n\$db_pass = getenv("DB_PASS") ?: "sidak_pass";\n\$db_name = getenv("DB_NAME") ?: "data_penduduk";\n\$koneksi = new mysqli (\$db_host,\$db_user,\$db_pass,\$db_name);/g' inc/koneksi.php
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
CMD ["apache2-foreground"]
|
||||
BIN
Pendataan_Penduduk_Pendatang_Desa_Sukawati.xlsx
Normal file
BIN
Pendataan_Penduduk_Pendatang_Desa_Sukawati.xlsx
Normal file
Binary file not shown.
BIN
WhatsApp Image 2026-01-27 at 11.43.32.jpeg
Normal file
BIN
WhatsApp Image 2026-01-27 at 11.43.32.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 148 KiB |
50
docker-compose.yml
Normal file
50
docker-compose.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
ports:
|
||||
- "8500:80"
|
||||
volumes:
|
||||
- ./:/var/www/html
|
||||
depends_on:
|
||||
- db
|
||||
environment:
|
||||
- DB_HOST=db
|
||||
- DB_USER=sidak_user
|
||||
- DB_PASS=sidak_pass
|
||||
- DB_NAME=data_penduduk
|
||||
networks:
|
||||
- sidak-network
|
||||
|
||||
db:
|
||||
image: mariadb:10.11
|
||||
ports:
|
||||
- "3307:3306"
|
||||
environment:
|
||||
- MARIADB_ROOT_PASSWORD=rootpassword
|
||||
- MARIADB_DATABASE=data_penduduk
|
||||
- MARIADB_USER=sidak_user
|
||||
- MARIADB_PASSWORD=sidak_pass
|
||||
volumes:
|
||||
- ./sidak_database_init.sql:/docker-entrypoint-initdb.d/init.sql:ro
|
||||
- mariadb-data:/var/lib/mysql
|
||||
networks:
|
||||
- sidak-network
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin
|
||||
ports:
|
||||
- "8080:80"
|
||||
environment:
|
||||
- PMA_HOST=db
|
||||
- PMA_PORT=3306
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- sidak-network
|
||||
|
||||
networks:
|
||||
sidak-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
mariadb-data:
|
||||
@@ -273,7 +273,7 @@
|
||||
<li class="nav-item">
|
||||
<a href="./report/laporan_pindah.php" target="_blank" class="nav-link">
|
||||
<i class="nav-icon far fa-circle text-warning"></i>
|
||||
<p>Data Pindah</p>
|
||||
<p>Laporan Pindah</p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
@@ -372,7 +372,7 @@
|
||||
<li class="nav-item">
|
||||
<a href="?page=data-pindah" class="nav-link">
|
||||
<i class="nav-icon far fa-circle text-warning"></i>
|
||||
<p>Data Pindah</p>
|
||||
<p>Laporan Pindah</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -464,7 +464,7 @@
|
||||
<li class="nav-item">
|
||||
<a href="./report/laporan_pindah.php" target="_blank" class="nav-link">
|
||||
<i class="nav-icon far fa-circle text-warning"></i>
|
||||
<p>Data Pindah</p>
|
||||
<p>Laporan Pindah</p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
|
||||
@@ -5,53 +5,111 @@
|
||||
// Ambil Data Profil
|
||||
$sql_profil = "SELECT * FROM tb_profil WHERE id_profil='1'";
|
||||
$query_profil = mysqli_query($koneksi, $sql_profil);
|
||||
$data_profil = mysqli_fetch_array($query_profil,MYSQLI_BOTH);
|
||||
$data_profil = mysqli_fetch_array($query_profil, MYSQLI_BOTH);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>LAPORAN DATA PINDAH</title>
|
||||
<meta charset="UTF-8">
|
||||
<title>LAPORAN PENDATAAN PENDUDUK PENDATANG</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; font-size: 12px; }
|
||||
.header { text-align: center; margin-bottom: 20px; }
|
||||
.header h2, .header h3 { margin: 5px 0; }
|
||||
.meta { margin-bottom: 15px; }
|
||||
.meta table { border: none; }
|
||||
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
|
||||
th, td { border: 1px solid black; padding: 5px; text-align: center; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.footer { margin-top: 30px; float: right; width: 30%; text-align: center; }
|
||||
.footer .signature { margin-top: 60px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h2>PEMERINTAH KABUPATEN <?php echo strtoupper($data_profil['kabupaten']); ?></h2>
|
||||
<h3>KECAMATAN <?php echo strtoupper($data_profil['kecamatan']); ?> <br> DESA <?php echo strtoupper($data_profil['nama_desa']); ?></h3>
|
||||
<p><?php echo $data_profil['alamat']; ?></p>
|
||||
<p>________________________________________________________________________</p>
|
||||
<h3>LAPORAN DATA PINDAH</h3>
|
||||
<p align="left">Dicetak Tanggal : <?php echo $tanggal; ?></p>
|
||||
</center>
|
||||
<div class="header">
|
||||
<h3>PENDATAAN PENDUDUK PENDATANG DI DESA <?php echo strtoupper($data_profil['nama_desa']); ?></h3>
|
||||
</div>
|
||||
|
||||
<table border="1" cellspacing="0" style="width: 100%">
|
||||
<div class="meta">
|
||||
<table>
|
||||
<tr>
|
||||
<td style="border:none; text-align:left; width: 150px;">PENAMPUNG</td>
|
||||
<td style="border:none; text-align:left; width: 10px;">:</td>
|
||||
<td style="border:none; text-align:left;">................................</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border:none; text-align:left;">ALAMAT/BANJAR</td>
|
||||
<td style="border:none; text-align:left;">:</td>
|
||||
<td style="border:none; text-align:left;">................................</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>NO</th>
|
||||
<th>NAMA</th>
|
||||
<th>NIK</th>
|
||||
<th>Nama</th>
|
||||
<th>Tanggal Pindah</th>
|
||||
<th>Alasan</th>
|
||||
<th>ALAMAT</th>
|
||||
<th>TTL</th>
|
||||
<th>PEKERJAAN</th>
|
||||
<th>MASUK/KELUAR</th>
|
||||
<th>KET</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$no=1;
|
||||
$sql_tampil = "SELECT p.nik, p.nama, m.tgl_pindah, m.alasan
|
||||
FROM tb_pindah m
|
||||
INNER JOIN tb_pdd p ON p.id_pend=m.id_pdd";
|
||||
$no = 1;
|
||||
// Query Gabungan Datang (Masuk) dan Pindah (Keluar)
|
||||
$sql_tampil = "
|
||||
(SELECT p.nama, p.nik, CONCAT(p.desa, ' RT ', p.rt, ' RW ', p.rw) as alamat,
|
||||
CONCAT(p.tempat_lh, ', ', DATE_FORMAT(p.tgl_lh, '%d-%m-%Y')) as ttl,
|
||||
p.pekerjaan, d.tgl_datang as tanggal, 'MASUK' as status, '' as keterangan
|
||||
FROM tb_datang d
|
||||
JOIN tb_pdd p ON d.id_pend = p.id_pend)
|
||||
UNION ALL
|
||||
(SELECT p.nama, p.nik, CONCAT(p.desa, ' RT ', p.rt, ' RW ', p.rw) as alamat,
|
||||
CONCAT(p.tempat_lh, ', ', DATE_FORMAT(p.tgl_lh, '%d-%m-%Y')) as ttl,
|
||||
p.pekerjaan, m.tgl_pindah as tanggal, 'KELUAR' as status, m.alasan as keterangan
|
||||
FROM tb_pindah m
|
||||
JOIN tb_pdd p ON m.id_pdd = p.id_pend)
|
||||
ORDER BY tanggal DESC
|
||||
";
|
||||
$query_tampil = mysqli_query($koneksi, $sql_tampil);
|
||||
while ($data = mysqli_fetch_array($query_tampil,MYSQLI_BOTH)) {
|
||||
if (mysqli_num_rows($query_tampil) > 0) {
|
||||
while ($data = mysqli_fetch_array($query_tampil, MYSQLI_BOTH)) {
|
||||
?>
|
||||
<tr>
|
||||
<td align="center"><?php echo $no++; ?></td>
|
||||
<td><?php echo $data['nik']; ?></td>
|
||||
<td><?php echo $no++; ?></td>
|
||||
<td><?php echo $data['nama']; ?></td>
|
||||
<td><?php echo $data['tgl_pindah']; ?></td>
|
||||
<td><?php echo $data['alasan']; ?></td>
|
||||
<td><?php echo $data['nik']; ?></td>
|
||||
<td><?php echo $data['alamat']; ?></td>
|
||||
<td><?php echo $data['ttl']; ?></td>
|
||||
<td><?php echo $data['pekerjaan']; ?></td>
|
||||
<td><?php echo $data['status']; ?></td>
|
||||
<td><?php echo $data['keterangan']; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
// Tampilkan baris kosong jika tidak ada data
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
echo "<tr><td> </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="footer">
|
||||
<div>................................, .......................</div>
|
||||
<div style="margin-top: 5px;">Mengetahui</div>
|
||||
<div class="signature">
|
||||
(................................)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.print();
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user