Bundle MariaDB for single container deployment

This commit is contained in:
2026-06-11 12:58:41 +07:00
parent 650e0b3f4f
commit 8907bf8a4e
2 changed files with 66 additions and 2 deletions
+20 -2
View File
@@ -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"]
+46
View File
@@ -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 "$@"