diff --git a/Dockerfile b/Dockerfile index 9bcbe2a..47735a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,15 @@ FROM php:8.2-apache -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 \ +RUN 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 \ - && sed -i 's/\r$//' /usr/local/bin/webgis-entrypoint \ - && chmod +x /usr/local/bin/webgis-entrypoint + && chown -R www-data:www-data /var/www/html -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 +ENV DB_HOST=db \ + DB_PORT=3306 EXPOSE 80 - -ENTRYPOINT ["webgis-entrypoint"] -CMD ["apache2-foreground"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..03d4ce3 --- /dev/null +++ b/docker-compose.yml @@ -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: diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh deleted file mode 100644 index 96282b0..0000000 --- a/docker/entrypoint.sh +++ /dev/null @@ -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 "$@" diff --git a/docker/initdb/00-user.sql b/docker/initdb/00-user.sql new file mode 100644 index 0000000..460cade --- /dev/null +++ b/docker/initdb/00-user.sql @@ -0,0 +1,3 @@ +CREATE USER IF NOT EXISTS 'webgis'@'%' IDENTIFIED BY 'webgis'; +GRANT ALL PRIVILEGES ON *.* TO 'webgis'@'%'; +FLUSH PRIVILEGES;