diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..67b83b6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,53 @@ +version: "3.8" + +services: + # --- PHP + Apache --- + web: + build: + context: . + dockerfile: web/Dockerfile + image: codebeater:latest + container_name: phpapache + ports: + - "${APP_PORT}:80" + volumes: + - ./src:/var/www/html + environment: + - APACHE_RUN_USER=www-data + - APACHE_RUN_GROUP=www-data + depends_on: + - db + + # --- MySQL Database --- + db: + image: mysql:8.0 + platform: linux/amd64 + container_name: sql + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + ports: + - "${MYSQL_PORT}:3306" + volumes: + - db_data:/var/lib/mysql + + # --- phpMyAdmin --- + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + platform: linux/amd64 + container_name: phpmyadmin + restart: unless-stopped + depends_on: + - db + environment: + PMA_HOST: db + PMA_USER: ${MYSQL_USER} + PMA_PASSWORD: ${MYSQL_PASSWORD} + ports: + - "${PHPMYADMIN_PORT}:80" + +volumes: + db_data: diff --git a/web/Dockerfile b/web/Dockerfile new file mode 100644 index 0000000..7d849fb --- /dev/null +++ b/web/Dockerfile @@ -0,0 +1,18 @@ +FROM php:8.1-apache + +# Install ekstensi PHP yang dibutuhkan +RUN apt-get update && apt-get install -y \ + libzip-dev zip unzip git \ + && docker-php-ext-install mysqli pdo pdo_mysql zip + +# Aktifkan mod_rewrite (penting untuk routing dan login) +RUN a2enmod rewrite + +# Copy source code (untuk development pakai volume) +COPY ./src/ /var/www/html/ + +# Ubah permission agar Apache bisa akses file +RUN chown -R www-data:www-data /var/www/html + +# Expose port 80 +EXPOSE 80