From b62c3a0ff53f888ac5808cdb5f7ddecb4bfdae0b Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 15:59:32 +0700 Subject: [PATCH 01/29] Update docker file --- Dockerfile | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index ae525c0..dd308b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,19 @@ -FROM php:8.1-fpm +FROM php:8.4-fpm -# Install dependencies +# Install system dependencies & PHP extensions RUN apt-get update && apt-get install -y \ + libzip-dev \ + unzip \ + git \ libpq-dev \ - zip unzip curl git \ - && docker-php-ext-install pdo_pgsql + libicu-dev \ + zip \ + curl \ + && docker-php-ext-install \ + intl \ + zip \ + pdo_pgsql \ + bcmath # Install Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer @@ -14,21 +23,18 @@ WORKDIR /var/www # Copy source COPY . . - -# Copy default env COPY .env.example .env -# Install Laravel dependencies +# Install dependencies RUN composer install --no-interaction --prefer-dist --optimize-autoloader -# Generate Laravel app key +# Generate app key RUN php artisan key:generate -# Set permissions for Laravel +# Set permissions RUN chown -R www-data:www-data /var/www \ - && chmod -R 755 /var/www \ && chmod -R 775 storage bootstrap/cache \ && chown -R www-data:www-data storage bootstrap/cache EXPOSE 9000 -CMD ["php-fpm"] +CMD ["php-fpm"] \ No newline at end of file From d2396a3d00b7eee54123a0df586d358adf6b5131 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:06:26 +0700 Subject: [PATCH 02/29] Update docker --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index dd308b8..b213492 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.4-fpm +FROM php:8.3-fpm # Install system dependencies & PHP extensions RUN apt-get update && apt-get install -y \ From 0647f28db147516d93d6438b50f5a3df865952f2 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:15:24 +0700 Subject: [PATCH 03/29] oks --- Dockerfile | 39 +++++++++++++-------------------------- entrypoint.sh | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index b213492..d0e0e74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,27 @@ FROM php:8.3-fpm -# Install system dependencies & PHP extensions +# Install dependencies & extensions RUN apt-get update && apt-get install -y \ - libzip-dev \ - unzip \ - git \ - libpq-dev \ - libicu-dev \ - zip \ - curl \ - && docker-php-ext-install \ - intl \ - zip \ - pdo_pgsql \ - bcmath + libzip-dev unzip git libpq-dev libicu-dev zip curl \ + && docker-php-ext-install intl zip pdo_pgsql bcmath # Install Composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer -# Set working directory WORKDIR /var/www -# Copy source +# Copy project files including entrypoint.sh COPY . . -COPY .env.example .env -# Install dependencies -RUN composer install --no-interaction --prefer-dist --optimize-autoloader +# Beri permission executable ke entrypoint.sh +RUN chmod +x /var/www/entrypoint.sh -# Generate app key -RUN php artisan key:generate - -# Set permissions -RUN chown -R www-data:www-data /var/www \ - && chmod -R 775 storage bootstrap/cache \ - && chown -R www-data:www-data storage bootstrap/cache +# Set permissions folder storage dan cache +RUN mkdir -p storage/framework/{cache,sessions,views} bootstrap/cache && \ + chown -R www-data:www-data storage bootstrap/cache && \ + chmod -R 775 storage bootstrap/cache EXPOSE 9000 -CMD ["php-fpm"] \ No newline at end of file + +# Set entrypoint +ENTRYPOINT ["/var/www/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..ee13346 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Install dependencies via composer (non-interactive) +composer install --no-interaction --prefer-dist --optimize-autoloader + +# Cache config, routes, views +php artisan config:cache +php artisan route:cache +php artisan view:cache + +# Jalankan migration otomatis dengan force (untuk production) +php artisan migrate --force + +# Jalankan php-fpm (foreground) +exec php-fpm -F From e718733a3185b51e9c945466188fb8e578305362 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:24:02 +0700 Subject: [PATCH 04/29] oks --- .drone.yml | 6 ++++++ Dockerfile | 39 ++++++++++++++++++++++++++------------- entrypoint.sh | 15 --------------- 3 files changed, 32 insertions(+), 28 deletions(-) delete mode 100644 entrypoint.sh diff --git a/.drone.yml b/.drone.yml index fbc482d..c0c5170 100644 --- a/.drone.yml +++ b/.drone.yml @@ -33,6 +33,10 @@ steps: from_secret: registry_username REGISTRY_PASSWORD: from_secret: registry_password + GIT_USERNAME: + from_secret: git_username + GIT_ACCESS_TOKEN: + from_secret: git_token commands: - apt-get update -qq && apt-get install -qq git openssh-client - mkdir -p ~/.ssh @@ -48,6 +52,8 @@ steps: ssh -i ~/.ssh/id_rsa opc@138.2.102.242 < Date: Wed, 28 May 2025 16:33:07 +0700 Subject: [PATCH 05/29] Komit --- nginx/conf.d/default.conf | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 nginx/conf.d/default.conf diff --git a/nginx/conf.d/default.conf b/nginx/conf.d/default.conf new file mode 100644 index 0000000..6922796 --- /dev/null +++ b/nginx/conf.d/default.conf @@ -0,0 +1,23 @@ +server { + listen 80; + index index.php index.html; + server_name siska.appstaging.my.id; + + root /var/www/public; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_pass app:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + + location ~ /\.ht { + deny all; + } +} From 22f76073c6be5e9633b50e29097dc6efef1cce70 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:39:01 +0700 Subject: [PATCH 06/29] Update conf --- docker-compose.yml | 49 +++++++++++++++++---------------- nginx/{conf.d => }/default.conf | 0 2 files changed, 26 insertions(+), 23 deletions(-) rename nginx/{conf.d => }/default.conf (100%) diff --git a/docker-compose.yml b/docker-compose.yml index db9f337..b6231ea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,25 +1,16 @@ version: "3" services: - sistem-akademik-dev: - image: registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev + app: + build: . container_name: sistem-akademik-dev - labels: - - "traefik.enable=true" - - "traefik.http.routers.sistem-akademik-dev-http.entrypoints=web" - - "traefik.http.routers.sistem-akademik-dev-http.rule=Host(`siska.appstaging.my.id`)" - - "traefik.http.routers.sistem-akademik-dev-http.middlewares=redirect-to-https" - - "traefik.http.routers.sistem-akademik-dev.entrypoints=websecure" - - "traefik.http.routers.sistem-akademik-dev.tls.certresolver=myresolver" - - "traefik.http.routers.sistem-akademik-dev.rule=Host(`siska.appstaging.my.id`)" - - "traefik.http.routers.sistem-akademik-dev.tls=true" volumes: - - .:/var/www + - .:/var/www - ./storage:/var/www/storage working_dir: /var/www + expose: + - 9000 restart: always - networks: - - traefik_default environment: APP_ENV: production APP_DEBUG: false @@ -30,15 +21,27 @@ services: DB_DATABASE: SISKA_2025 DB_USERNAME: root DB_PASSWORD: postroot123 - command: > - sh -c " - composer install --no-interaction --prefer-dist && - php artisan config:cache && - php artisan route:cache && - php artisan view:cache && - php artisan migrate --force && - php-fpm - " + + web: + image: nginx:alpine + container_name: sistem-akademik-dev-web + volumes: + - .:/var/www + - ./nginx:/etc/nginx/conf.d + ports: + - 8080:80 + depends_on: + - app + restart: always + labels: + - "traefik.enable=true" + - "traefik.http.routers.sistem-akademik-dev.rule=Host(`siska.appstaging.my.id`)" + - "traefik.http.services.sistem-akademik-dev.loadbalancer.server.port=80" + - "traefik.http.routers.sistem-akademik-dev.entrypoints=websecure" + - "traefik.http.routers.sistem-akademik-dev.tls.certresolver=myresolver" + - "traefik.http.routers.sistem-akademik-dev.tls=true" + networks: + - traefik_default networks: traefik_default: diff --git a/nginx/conf.d/default.conf b/nginx/default.conf similarity index 100% rename from nginx/conf.d/default.conf rename to nginx/default.conf From 0fc1589c0e8dac52081b18b1c492edb49fa779a5 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:50:50 +0700 Subject: [PATCH 07/29] Update server --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index c0c5170..e1dca7f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -53,7 +53,7 @@ steps: docker login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD registry.git.appstaging.my.id cd /home/opc/workspace/sistem-akademik git checkout main - git pull https://$GIT_USERNAME:$GIT_ACCESS_TOKEN@git.appstaging.my.id/audydental/audy-dental-website-backend.git develop + git pull https://$GIT_USERNAME:$GIT_ACCESS_TOKEN@git.appstaging.my.id/reihanrere/sistem-akademik.git main docker-compose rm --stop --force sistem-akademik-dev docker image prune --all --force docker pull registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev From f542513789f3580e80a90e9bd94459dc3f259ac4 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:56:00 +0700 Subject: [PATCH 08/29] Update traefik --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b6231ea..524fac1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: - app: + sistem-akademik-dev: build: . container_name: sistem-akademik-dev volumes: From 580c6c75492540b6a427abee6c915cc69b25a5a6 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 16:59:49 +0700 Subject: [PATCH 09/29] Update server --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 524fac1..acd7638 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: ports: - 8080:80 depends_on: - - app + - sistem-akademik-dev restart: always labels: - "traefik.enable=true" From 2bc5b26d3a390cfcace3f5871752920f74d4bc4b Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 17:13:47 +0700 Subject: [PATCH 10/29] Update --- docker-compose.yml | 2 ++ nginx/default.conf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index acd7638..b6a373b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,6 +21,8 @@ services: DB_DATABASE: SISKA_2025 DB_USERNAME: root DB_PASSWORD: postroot123 + networks: + - traefik_default web: image: nginx:alpine diff --git a/nginx/default.conf b/nginx/default.conf index 6922796..79229c6 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -10,7 +10,7 @@ server { } location ~ \.php$ { - fastcgi_pass app:9000; + fastcgi_pass sistem-akademik-dev:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; From 7408940113206e3d00371a616b7c6249ad2b5736 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 18:48:44 +0700 Subject: [PATCH 11/29] oks --- .drone.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index e1dca7f..1cf49f8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -50,14 +50,21 @@ steps: - chmod 600 ~/.ssh/config - | ssh -i ~/.ssh/id_rsa opc@138.2.102.242 < Date: Wed, 28 May 2025 18:52:40 +0700 Subject: [PATCH 12/29] Update oks --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 1cf49f8..ece06a9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -61,10 +61,10 @@ steps: docker-compose up -d --no-deps --build sistem-akademik-dev # Jalankan composer install di container - docker exec -it sistem-akademik-dev composer install --no-interaction --prefer-dist --optimize-autoloader + docker exec -i sistem-akademik-dev composer install --no-interaction --prefer-dist --optimize-autoloader # Jika perlu migrasi db, bisa ditambahkan baris ini: - docker exec -it sistem-akademik-dev php artisan migrate --force + docker exec -i sistem-akademik-dev php artisan migrate --force EOF volumes: From 166d4987c643f4f0d9554eed5672dc5955886a9c Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 19:17:06 +0700 Subject: [PATCH 13/29] Update --- Dockerfile | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index b213492..649c5d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,16 +25,20 @@ WORKDIR /var/www COPY . . COPY .env.example .env -# Install dependencies -RUN composer install --no-interaction --prefer-dist --optimize-autoloader +# Set www-data user permission before running composer/install artisan +RUN chown -R www-data:www-data /var/www -# Generate app key -RUN php artisan key:generate +USER www-data -# Set permissions -RUN chown -R www-data:www-data /var/www \ - && chmod -R 775 storage bootstrap/cache \ - && chown -R www-data:www-data storage bootstrap/cache +# Install dependencies & generate app key as www-data user +RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ + && php artisan key:generate + +USER root + +# Set permissions again just in case +RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ + && chmod -R 775 /var/www/storage /var/www/bootstrap/cache EXPOSE 9000 -CMD ["php-fpm"] \ No newline at end of file +CMD ["php-fpm"] From eee48d854ede9915bfacbde3a865e7e6cb9a153f Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 20:04:34 +0700 Subject: [PATCH 14/29] oks --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b6a373b..63c63da 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: - .:/var/www - ./nginx:/etc/nginx/conf.d ports: - - 8080:80 + - 8181:80 depends_on: - sistem-akademik-dev restart: always From 4077c5ed0bc237fc441e9fb2aa0c52a26daf5eae Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 20:18:06 +0700 Subject: [PATCH 15/29] UP --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 63c63da..e200d02 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: - .:/var/www - ./nginx:/etc/nginx/conf.d ports: - - 8181:80 + - 8282:80 depends_on: - sistem-akademik-dev restart: always From f02f1a35303abaf6768cdbf560e980a60b202a84 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 20:26:12 +0700 Subject: [PATCH 16/29] UP --- docker-compose.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e200d02..724e5db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,11 +37,13 @@ services: restart: always labels: - "traefik.enable=true" - - "traefik.http.routers.sistem-akademik-dev.rule=Host(`siska.appstaging.my.id`)" - - "traefik.http.services.sistem-akademik-dev.loadbalancer.server.port=80" - - "traefik.http.routers.sistem-akademik-dev.entrypoints=websecure" - - "traefik.http.routers.sistem-akademik-dev.tls.certresolver=myresolver" - - "traefik.http.routers.sistem-akademik-dev.tls=true" + - "traefik.http.routers.web-http.entrypoints=web" + - "traefik.http.routers.web-http.rule=Host(`apimidaz.appstaging.my.id`)" + - "traefik.http.routers.web-http.middlewares=redirect-to-https" + - "traefik.http.routers.web.entrypoints=websecure" + - "traefik.http.routers.web.tls.certresolver=myresolver" + - "traefik.http.routers.web.rule=Host(`apimidaz.appstaging.my.id`)" + - 'traefik.http.routers.web.tls=true' networks: - traefik_default From b400184357d972ba882efe70651da6551630537e Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 20:54:09 +0700 Subject: [PATCH 17/29] update --- app/Providers/AppServiceProvider.php | 4 +++- docker-compose.yml | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..5c86358 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -19,6 +19,8 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - // + if (env('APP_ENV') === 'production') { + URL::forceScheme('https'); + } } } diff --git a/docker-compose.yml b/docker-compose.yml index 724e5db..e53a3f4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -38,11 +38,11 @@ services: labels: - "traefik.enable=true" - "traefik.http.routers.web-http.entrypoints=web" - - "traefik.http.routers.web-http.rule=Host(`apimidaz.appstaging.my.id`)" + - "traefik.http.routers.web-http.rule=Host(`siska.appstaging.my.id`)" - "traefik.http.routers.web-http.middlewares=redirect-to-https" - "traefik.http.routers.web.entrypoints=websecure" - "traefik.http.routers.web.tls.certresolver=myresolver" - - "traefik.http.routers.web.rule=Host(`apimidaz.appstaging.my.id`)" + - "traefik.http.routers.web.rule=Host(`siska.appstaging.my.id`)" - 'traefik.http.routers.web.tls=true' networks: - traefik_default From b5a2a47a769446038c4e623fdd145dd09fa4b831 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 21:03:37 +0700 Subject: [PATCH 18/29] oks --- app/Providers/AppServiceProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5c86358..236dbfe 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Facades\URL; class AppServiceProvider extends ServiceProvider { From e9a277968fd6742a888ef98e21433fc352a31c43 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 21:55:23 +0700 Subject: [PATCH 19/29] Update --- nginx/default.conf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nginx/default.conf b/nginx/default.conf index 79229c6..e38b280 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -2,7 +2,8 @@ server { listen 80; index index.php index.html; server_name siska.appstaging.my.id; - + + # Ensure this matches your actual document root root /var/www/public; location / { @@ -12,12 +13,12 @@ server { location ~ \.php$ { fastcgi_pass sistem-akademik-dev:9000; fastcgi_index index.php; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; + include fastcgi_params; } location ~ /\.ht { deny all; } -} +} \ No newline at end of file From 606ad60c9a06dc514860885857168d69b1f11ef6 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 22:33:36 +0700 Subject: [PATCH 20/29] Update --- Dockerfile | 72 +++++++++++++++++++++------------------------- docker-compose.yml | 48 +++++++++++-------------------- 2 files changed, 48 insertions(+), 72 deletions(-) diff --git a/Dockerfile b/Dockerfile index 649c5d3..dbc9259 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,44 +1,36 @@ -FROM php:8.3-fpm - -# Install system dependencies & PHP extensions -RUN apt-get update && apt-get install -y \ - libzip-dev \ - unzip \ - git \ - libpq-dev \ - libicu-dev \ - zip \ - curl \ - && docker-php-ext-install \ - intl \ - zip \ - pdo_pgsql \ - bcmath - -# Install Composer -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer - -# Set working directory -WORKDIR /var/www - -# Copy source -COPY . . -COPY .env.example .env - -# Set www-data user permission before running composer/install artisan -RUN chown -R www-data:www-data /var/www - -USER www-data - -# Install dependencies & generate app key as www-data user -RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ - && php artisan key:generate +# Define the base image +FROM teguh02/laravel-filament:latest +# Set user to root USER root -# Set permissions again just in case -RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ - && chmod -R 775 /var/www/storage /var/www/bootstrap/cache +# Change the working directory +WORKDIR /var/www -EXPOSE 9000 -CMD ["php-fpm"] +# Remove the all files in the /var/www/html directory +RUN rm -rf /var/www/html/* + +# Copy laravel public directory to the /var/www/html directory +COPY ./public /var/www/html + +# Copy the project files to the /var/www directory +COPY . /var/www + +# Install the project dependencies +RUN composer install +RUN npm install + +# Build the vite +RUN npm run build + +# Change the directory permission +RUN chmod -R 777 /var/www + +# If you want to change the timezone of the container to UTC +# RUN sed -i 's/;date.timezone =/date.timezone = UTC/g' /etc/php/8.3/fpm/php.ini +# RUN sed -i 's/;date.timezone =/date.timezone = UTC/g' /etc/php/8.3/cli/php.ini + +# If you want to display the error message +RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/fpm/php.ini +RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/cli/php.ini +RUN sed -i 's/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL/g' /etc/php/8.3/fpm/php.ini diff --git a/docker-compose.yml b/docker-compose.yml index e53a3f4..26ea3cb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,40 +1,24 @@ -version: "3" - services: sistem-akademik-dev: - build: . container_name: sistem-akademik-dev + build: + context: . + dockerfile: Dockerfile volumes: + - ./public:/var/www/html - .:/var/www - - ./storage:/var/www/storage - working_dir: /var/www - expose: - - 9000 - restart: always - environment: - APP_ENV: production - APP_DEBUG: false - APP_KEY: base64:Wz4daUZXYysRm1vUWBWTjQ5v0JFWBsQ2wPw2tHRALgY= - DB_CONNECTION: pgsql - DB_HOST: appstaging.my.id - DB_PORT: 5432 - DB_DATABASE: SISKA_2025 - DB_USERNAME: root - DB_PASSWORD: postroot123 - networks: - - traefik_default - - web: - image: nginx:alpine - container_name: sistem-akademik-dev-web - volumes: - - .:/var/www - - ./nginx:/etc/nginx/conf.d ports: - - 8282:80 - depends_on: - - sistem-akademik-dev - restart: always + - 7271:80 + restart: unless-stopped + extra_hosts: + - "host.docker.internal:host-gateway" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost/up"] + interval: 30s + timeout: 10s + retries: 5 + env_file: + - .env labels: - "traefik.enable=true" - "traefik.http.routers.web-http.entrypoints=web" @@ -45,7 +29,7 @@ services: - "traefik.http.routers.web.rule=Host(`siska.appstaging.my.id`)" - 'traefik.http.routers.web.tls=true' networks: - - traefik_default + - traefik_default networks: traefik_default: From e57302418729365583dc0df6270f63a0d72cf6d4 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 22:35:46 +0700 Subject: [PATCH 21/29] oks --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index ece06a9..926604b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: - apk add --no-cache curl bash - echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USERNAME" --password-stdin registry.git.appstaging.my.id - docker buildx create --use --name mybuilder || true - - docker buildx build --platform linux/arm64 -t registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev -f Dockerfile . --push + - docker buildx build --platform linux/arm64 linux/amd64 -t registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev -f Dockerfile . --push - name: deploy-image-dev image: debian:latest From a0e4d91068c0d4348b294f13280107b498f2dcdc Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 22:39:09 +0700 Subject: [PATCH 22/29] Update --- .drone.yml | 2 +- Dockerfile | 61 ++++++++++++++++++++++++++++------------------ docker-compose.yml | 48 ++++++++++++++++++++++++------------ 3 files changed, 70 insertions(+), 41 deletions(-) diff --git a/.drone.yml b/.drone.yml index 926604b..ece06a9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: - apk add --no-cache curl bash - echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USERNAME" --password-stdin registry.git.appstaging.my.id - docker buildx create --use --name mybuilder || true - - docker buildx build --platform linux/arm64 linux/amd64 -t registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev -f Dockerfile . --push + - docker buildx build --platform linux/arm64 -t registry.git.appstaging.my.id/reihanrere/sistem-akademik/sistem-akademik-dev -f Dockerfile . --push - name: deploy-image-dev image: debian:latest diff --git a/Dockerfile b/Dockerfile index dbc9259..0433224 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,49 @@ -# Define the base image -FROM teguh02/laravel-filament:latest +FROM php:8.3-fpm -# Set user to root -USER root +# Install system dependencies & PHP extensions +RUN apt-get update && apt-get install -y \ + libzip-dev \ + unzip \ + git \ + libpq-dev \ + libicu-dev \ + zip \ + curl \ + && docker-php-ext-install \ + intl \ + zip \ + pdo_pgsql \ + bcmath -# Change the working directory +# Install Composer +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +# Set working directory WORKDIR /var/www -# Remove the all files in the /var/www/html directory -RUN rm -rf /var/www/html/* +# Copy source +COPY . . +COPY .env.example .env -# Copy laravel public directory to the /var/www/html directory -COPY ./public /var/www/html +# Set www-data user permission before running composer/install artisan +RUN chown -R www-data:www-data /var/www -# Copy the project files to the /var/www directory -COPY . /var/www +USER www-data -# Install the project dependencies -RUN composer install -RUN npm install +# Install dependencies & generate app key as www-data user +RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ + && php artisan key:generate -# Build the vite -RUN npm run build +USER root + +# Set permissions again just in case +RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ + && chmod -R 775 /var/www/storage /var/www/bootstrap/cache -# Change the directory permission RUN chmod -R 777 /var/www - -# If you want to change the timezone of the container to UTC -# RUN sed -i 's/;date.timezone =/date.timezone = UTC/g' /etc/php/8.3/fpm/php.ini -# RUN sed -i 's/;date.timezone =/date.timezone = UTC/g' /etc/php/8.3/cli/php.ini - -# If you want to display the error message RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/fpm/php.ini RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/cli/php.ini -RUN sed -i 's/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL/g' /etc/php/8.3/fpm/php.ini +RUN sed -i 's/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL/g' /etc/php/8.3/fpm/php.ini + +EXPOSE 9000 +CMD ["php-fpm"] diff --git a/docker-compose.yml b/docker-compose.yml index 26ea3cb..e53a3f4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,40 @@ +version: "3" + services: sistem-akademik-dev: + build: . container_name: sistem-akademik-dev - build: - context: . - dockerfile: Dockerfile volumes: - - ./public:/var/www/html - .:/var/www + - ./storage:/var/www/storage + working_dir: /var/www + expose: + - 9000 + restart: always + environment: + APP_ENV: production + APP_DEBUG: false + APP_KEY: base64:Wz4daUZXYysRm1vUWBWTjQ5v0JFWBsQ2wPw2tHRALgY= + DB_CONNECTION: pgsql + DB_HOST: appstaging.my.id + DB_PORT: 5432 + DB_DATABASE: SISKA_2025 + DB_USERNAME: root + DB_PASSWORD: postroot123 + networks: + - traefik_default + + web: + image: nginx:alpine + container_name: sistem-akademik-dev-web + volumes: + - .:/var/www + - ./nginx:/etc/nginx/conf.d ports: - - 7271:80 - restart: unless-stopped - extra_hosts: - - "host.docker.internal:host-gateway" - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost/up"] - interval: 30s - timeout: 10s - retries: 5 - env_file: - - .env + - 8282:80 + depends_on: + - sistem-akademik-dev + restart: always labels: - "traefik.enable=true" - "traefik.http.routers.web-http.entrypoints=web" @@ -29,7 +45,7 @@ services: - "traefik.http.routers.web.rule=Host(`siska.appstaging.my.id`)" - 'traefik.http.routers.web.tls=true' networks: - - traefik_default + - traefik_default networks: traefik_default: From 3ab6acb1cd232b3daa22fdeab07a80074a11e4d6 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 23:11:38 +0700 Subject: [PATCH 23/29] Update --- Dockerfile | 4 ---- app/Models/User.php | 6 +++++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0433224..b202928 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,10 +40,6 @@ USER root RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ && chmod -R 775 /var/www/storage /var/www/bootstrap/cache -RUN chmod -R 777 /var/www -RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/fpm/php.ini -RUN sed -i 's/display_errors = Off/display_errors = On/g' /etc/php/8.3/cli/php.ini -RUN sed -i 's/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL/g' /etc/php/8.3/fpm/php.ini EXPOSE 9000 CMD ["php-fpm"] diff --git a/app/Models/User.php b/app/Models/User.php index c56ea0c..fbbcde2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -8,8 +8,9 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Spatie\Permission\Traits\HasRoles; +use Filament\Models\Contracts\FilamentUser; -class User extends Authenticatable +class User extends Authenticatable implements FilamentUser { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable, HasRoles; @@ -62,4 +63,7 @@ class User extends Authenticatable { return $this->hasMany(HomeRoomTeacher::class, 'teacher_id'); } + public function canAccessFilament(): bool { + return true; + } } From fc00b3029c7e655c591535600458e9f472f9b37e Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 23:27:13 +0700 Subject: [PATCH 24/29] Update --- Dockerfile | 4 ++-- app/Models/User.php | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index b202928..4d012bb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,8 +31,8 @@ RUN chown -R www-data:www-data /var/www USER www-data # Install dependencies & generate app key as www-data user -RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ - && php artisan key:generate +#RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ +# && php artisan key:generate USER root diff --git a/app/Models/User.php b/app/Models/User.php index fbbcde2..c56ea0c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -8,9 +8,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Spatie\Permission\Traits\HasRoles; -use Filament\Models\Contracts\FilamentUser; -class User extends Authenticatable implements FilamentUser +class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable, HasRoles; @@ -63,7 +62,4 @@ class User extends Authenticatable implements FilamentUser { return $this->hasMany(HomeRoomTeacher::class, 'teacher_id'); } - public function canAccessFilament(): bool { - return true; - } } From ce73db4924ec4af06c6cbf368491aadafb6f9547 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Wed, 28 May 2025 23:27:33 +0700 Subject: [PATCH 25/29] Update --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4d012bb..9e7d48a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ USER www-data # Install dependencies & generate app key as www-data user #RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ -# && php artisan key:generate +#git && php artisan key:generate USER root From 448f19587b95213279ae31a73b2e11b43c386b3c Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Thu, 29 May 2025 09:48:07 +0700 Subject: [PATCH 26/29] Update --- docker-compose.yml | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e53a3f4..0679a1c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,8 +8,8 @@ services: - .:/var/www - ./storage:/var/www/storage working_dir: /var/www - expose: - - 9000 + ports: + - "8000:8000" # port artisan serve restart: always environment: APP_ENV: production @@ -21,20 +21,6 @@ services: DB_DATABASE: SISKA_2025 DB_USERNAME: root DB_PASSWORD: postroot123 - networks: - - traefik_default - - web: - image: nginx:alpine - container_name: sistem-akademik-dev-web - volumes: - - .:/var/www - - ./nginx:/etc/nginx/conf.d - ports: - - 8282:80 - depends_on: - - sistem-akademik-dev - restart: always labels: - "traefik.enable=true" - "traefik.http.routers.web-http.entrypoints=web" @@ -45,8 +31,8 @@ services: - "traefik.http.routers.web.rule=Host(`siska.appstaging.my.id`)" - 'traefik.http.routers.web.tls=true' networks: - - traefik_default + - traefik_default networks: traefik_default: - external: true + external: true \ No newline at end of file From 1c79c31a2c40686c23e633402c05d29b8b99bf1f Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Thu, 29 May 2025 13:32:33 +0700 Subject: [PATCH 27/29] Oks --- Dockerfile | 18 +++++++++++------- docker-compose.yml | 21 ++++++++++----------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9e7d48a..4546969 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,21 +25,25 @@ WORKDIR /var/www COPY . . COPY .env.example .env -# Set www-data user permission before running composer/install artisan +# Set permission RUN chown -R www-data:www-data /var/www USER www-data -# Install dependencies & generate app key as www-data user -#RUN composer install --no-interaction --prefer-dist --optimize-autoloader \ -#git && php artisan key:generate +# Install dependencies & generate app key +RUN composer install --no-interaction --prefer-dist --optimize-autoloader + +# Uncomment if you want to generate key automatically (optional) +# RUN php artisan key:generate USER root -# Set permissions again just in case +# Set storage & cache permission RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ && chmod -R 775 /var/www/storage /var/www/bootstrap/cache +# Expose default Laravel serve port +EXPOSE 8000 -EXPOSE 9000 -CMD ["php-fpm"] +# Use artisan serve instead of php-fpm +CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"] diff --git a/docker-compose.yml b/docker-compose.yml index 0679a1c..efecccd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3" +version: "3.8" services: sistem-akademik-dev: @@ -6,10 +6,9 @@ services: container_name: sistem-akademik-dev volumes: - .:/var/www - - ./storage:/var/www/storage working_dir: /var/www ports: - - "8000:8000" # port artisan serve + - "8000:8000" # Laravel Artisan Serve port restart: always environment: APP_ENV: production @@ -23,16 +22,16 @@ services: DB_PASSWORD: postroot123 labels: - "traefik.enable=true" - - "traefik.http.routers.web-http.entrypoints=web" - - "traefik.http.routers.web-http.rule=Host(`siska.appstaging.my.id`)" - - "traefik.http.routers.web-http.middlewares=redirect-to-https" - - "traefik.http.routers.web.entrypoints=websecure" - - "traefik.http.routers.web.tls.certresolver=myresolver" - - "traefik.http.routers.web.rule=Host(`siska.appstaging.my.id`)" - - 'traefik.http.routers.web.tls=true' + - "traefik.http.routers.sistem-akademik-dev-http.entrypoints=web" + - "traefik.http.routers.sistem-akademik-dev-http.rule=Host(`siska.appstaging.my.id`)" + - "traefik.http.routers.sistem-akademik-dev-http.middlewares=redirect-to-https" + - "traefik.http.routers.sistem-akademik-dev.entrypoints=websecure" + - "traefik.http.routers.sistem-akademik-dev.tls.certresolver=myresolver" + - "traefik.http.routers.sistem-akademik-dev.rule=Host(`siska.appstaging.my.id`)" + - "traefik.http.routers.sistem-akademik-dev.tls=true" networks: - traefik_default networks: traefik_default: - external: true \ No newline at end of file + external: true From 9fd692bcfdc2b2f8a3a648b4f0fd452784c45007 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Thu, 29 May 2025 13:48:01 +0700 Subject: [PATCH 28/29] Updae --- config/filament-shield.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/filament-shield.php b/config/filament-shield.php index 9b29a09..6320c48 100644 --- a/config/filament-shield.php +++ b/config/filament-shield.php @@ -22,7 +22,7 @@ return [ 'super_admin' => [ 'enabled' => true, 'name' => 'admin', - 'define_via_gate' => false, + 'define_via_gate' => true, 'intercept_gate' => 'before', // after ], From 5b4d56d0032958529e722d296eef00cb88bd3746 Mon Sep 17 00:00:00 2001 From: Triono Putra Date: Thu, 29 May 2025 13:51:34 +0700 Subject: [PATCH 29/29] oks --- Dockerfile | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4546969..5ff55e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.3-fpm +FROM php:8.3-cli # Install system dependencies & PHP extensions RUN apt-get update && apt-get install -y \ @@ -21,29 +21,30 @@ COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # Set working directory WORKDIR /var/www -# Copy source +# Copy source code COPY . . COPY .env.example .env -# Set permission -RUN chown -R www-data:www-data /var/www +# Set permissions for Laravel writable directories +RUN mkdir -p storage bootstrap/cache \ + && chown -R www-data:www-data /var/www \ + && chmod -R ug+rwx storage bootstrap/cache +# Use non-root user for installing dependencies USER www-data -# Install dependencies & generate app key +# Install PHP dependencies RUN composer install --no-interaction --prefer-dist --optimize-autoloader -# Uncomment if you want to generate key automatically (optional) -# RUN php artisan key:generate - +# Back to root to ensure runtime permissions USER root -# Set storage & cache permission +# Re-apply permissions to writable folders RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache \ && chmod -R 775 /var/www/storage /var/www/bootstrap/cache -# Expose default Laravel serve port +# Expose Laravel development server port EXPOSE 8000 -# Use artisan serve instead of php-fpm +# Run with artisan serve instead of php-fpm CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]