From 8907bf8a4e97c2f7607fd1870d95a4d5391c97e7 Mon Sep 17 00:00:00 2001 From: AufaHafizah Date: Thu, 11 Jun 2026 12:58:41 +0700 Subject: [PATCH] Bundle MariaDB for single container deployment --- Dockerfile | 22 +++++++++++++++++++-- docker/entrypoint.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 docker/entrypoint.sh diff --git a/Dockerfile b/Dockerfile index f8d0fd8..9bcbe2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,30 @@ FROM php:8.2-apache -RUN docker-php-ext-install mysqli pdo pdo_mysql \ +RUN apt-get update \ + && apt-get install -y --no-install-recommends mariadb-server mariadb-client \ + && rm -rf /var/lib/apt/lists/* \ + && docker-php-ext-install mysqli pdo pdo_mysql \ && a2enmod rewrite \ && echo "ServerName localhost" >> /etc/apache2/apache2.conf COPY . /var/www/html/ +COPY docker/entrypoint.sh /usr/local/bin/webgis-entrypoint RUN mkdir -p /var/www/html/05/uploads/bukti \ - && chown -R www-data:www-data /var/www/html + && chown -R www-data:www-data /var/www/html \ + && sed -i 's/\r$//' /usr/local/bin/webgis-entrypoint \ + && chmod +x /usr/local/bin/webgis-entrypoint + +ENV DB_HOST=127.0.0.1 \ + DB_PORT=3306 \ + DB_USER=webgis \ + DB_PASSWORD=webgis \ + DB_NAME_01=spbu_db \ + DB_NAME_02=webgis2 \ + DB_NAME_04=spbu_db \ + DB_NAME_05=webgis_uas EXPOSE 80 + +ENTRYPOINT ["webgis-entrypoint"] +CMD ["apache2-foreground"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..96282b0 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,46 @@ +#!/bin/sh +set -eu + +SOCKET="/run/mysqld/mysqld.sock" + +mkdir -p /run/mysqld /var/lib/mysql +chown -R mysql:mysql /run/mysqld /var/lib/mysql + +if [ ! -d /var/lib/mysql/mysql ]; then + mariadb-install-db --user=mysql --datadir=/var/lib/mysql --skip-test-db >/dev/null +fi + +mysqld_safe --datadir=/var/lib/mysql --bind-address=127.0.0.1 --port=3306 >/tmp/mariadb.log 2>&1 & + +tries=0 +until mysqladmin --protocol=socket --socket="$SOCKET" -uroot ping >/dev/null 2>&1; do + tries=$((tries + 1)) + if [ "$tries" -gt 60 ]; then + echo "MariaDB gagal start. Log:" + cat /tmp/mariadb.log || true + exit 1 + fi + sleep 1 +done + +mysql --protocol=socket --socket="$SOCKET" -uroot <<'SQL' +CREATE USER IF NOT EXISTS 'webgis'@'%' IDENTIFIED BY 'webgis'; +CREATE USER IF NOT EXISTS 'webgis'@'localhost' IDENTIFIED BY 'webgis'; +GRANT ALL PRIVILEGES ON *.* TO 'webgis'@'%'; +GRANT ALL PRIVILEGES ON *.* TO 'webgis'@'localhost'; +FLUSH PRIVILEGES; +SQL + +if ! mysql --protocol=socket --socket="$SOCKET" -uroot -N -e "SHOW TABLES FROM spbu_db LIKE 'spbu';" 2>/dev/null | grep -q '^spbu$'; then + mysql --protocol=socket --socket="$SOCKET" -uroot < /var/www/html/01/spbu_db.sql +fi + +if ! mysql --protocol=socket --socket="$SOCKET" -uroot -N -e "SHOW TABLES FROM webgis2 LIKE 'jalan';" 2>/dev/null | grep -q '^jalan$'; then + mysql --protocol=socket --socket="$SOCKET" -uroot < /var/www/html/02/webgis2.sql +fi + +if ! mysql --protocol=socket --socket="$SOCKET" -uroot -N -e "SHOW TABLES FROM webgis_uas LIKE 'rumah_ibadah';" 2>/dev/null | grep -q '^rumah_ibadah$'; then + mysql --protocol=socket --socket="$SOCKET" -uroot < /var/www/html/05/webgis_uas.sql +fi + +exec "$@"