Use Docker Compose with MariaDB service
This commit is contained in:
+4
-19
@@ -1,30 +1,15 @@
|
|||||||
FROM php:8.2-apache
|
FROM php:8.2-apache
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN docker-php-ext-install mysqli pdo pdo_mysql \
|
||||||
&& 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 \
|
&& a2enmod rewrite \
|
||||||
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
&& echo "ServerName localhost" >> /etc/apache2/apache2.conf
|
||||||
|
|
||||||
COPY . /var/www/html/
|
COPY . /var/www/html/
|
||||||
COPY docker/entrypoint.sh /usr/local/bin/webgis-entrypoint
|
|
||||||
|
|
||||||
RUN mkdir -p /var/www/html/05/uploads/bukti \
|
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 \
|
ENV DB_HOST=db \
|
||||||
DB_PORT=3306 \
|
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
|
EXPOSE 80
|
||||||
|
|
||||||
ENTRYPOINT ["webgis-entrypoint"]
|
|
||||||
CMD ["apache2-foreground"]
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
DB_HOST: db
|
||||||
|
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
|
||||||
|
ports:
|
||||||
|
- "80"
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:10.11
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MARIADB_ROOT_PASSWORD: rootwebgis
|
||||||
|
volumes:
|
||||||
|
- webgis_db_data:/var/lib/mysql
|
||||||
|
- ./docker/initdb/00-user.sql:/docker-entrypoint-initdb.d/00-user.sql:ro
|
||||||
|
- ./01/spbu_db.sql:/docker-entrypoint-initdb.d/01-spbu_db.sql:ro
|
||||||
|
- ./02/webgis2.sql:/docker-entrypoint-initdb.d/02-webgis2.sql:ro
|
||||||
|
- ./05/webgis_uas.sql:/docker-entrypoint-initdb.d/05-webgis_uas.sql:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
webgis_db_data:
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/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 "$@"
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
CREATE USER IF NOT EXISTS 'webgis'@'%' IDENTIFIED BY 'webgis';
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'webgis'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
Reference in New Issue
Block a user