This commit is contained in:
rahmagustin 2026-03-12 11:41:12 +07:00
commit 64a7a9bb24
4 changed files with 144 additions and 0 deletions

45
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: Auto Deploy SIG TPS Nganjuk
on:
push:
branches:
- main
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Deployment Logic SIG TPS Nganjuk
run: |
cd /www/wwwroot/sig-tps
# 1. Ambil ID commit lama untuk deteksi perubahan
OLD_COMMIT=$(git rev-parse HEAD)
# 2. Tarik kode terbaru
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/rahmagustin/sig-tps.git
git fetch -4 --all
git reset --hard origin/main
# 3. Ambil ID commit baru
NEW_COMMIT=$(git rev-parse HEAD)
# 4. Build dependencies (Container temporary)
docker run --rm -v $(pwd):/app -w /app composer:2 install --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs
# 5. Perbaikan permission untuk user www/docker (PUID 33)
# Sekalian fix untuk storage dan cache biar aman
chown -R 33:33 vendor/ storage/ bootstrap/cache/
chmod -R 775 storage/ bootstrap/cache/
# 6. Refresh cache Laravel
docker compose exec -T sig_php php artisan optimize:clear
# 7. Deteksi otomatis migrasi database
if [ "$OLD_COMMIT" != "$NEW_COMMIT" ] && git diff --name-only $OLD_COMMIT $NEW_COMMIT | grep -q "^database/migrations/"; then
echo "🚀 Perubahan database terdeteksi! Menjalankan migrate..."
docker compose exec -T sig_php php artisan migrate --force
else
echo "✅ Tidak ada file migrasi baru. Skip migrate."
fi

38
Dockerfile Normal file
View File

@ -0,0 +1,38 @@
FROM php:8.2-fpm
# Set working directory
WORKDIR /var/www
# 1. Install system dependencies & NODE.JS (Kita gabung disini)
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
libzip-dev \
libicu-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
gnupg \
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Config & Install PHP extensions
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip intl
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Copy files
COPY . /var/www
# Set Permission
RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache
EXPOSE 9000
CMD ["php-fpm"]

38
docker-compose.yml Normal file
View File

@ -0,0 +1,38 @@
version: '3'
services:
sig_php:
build:
context: .
dockerfile: Dockerfile
image: sig-app
container_name: sig-php-container
restart: unless-stopped
working_dir: /var/www
volumes:
- .:/var/www
networks:
- sig-network
- laravel-network
sig_nginx:
image: nginx:alpine
container_name: sig-nginx-container
restart: unless-stopped
ports:
- "8089:80"
volumes:
- .:/var/www
- ./nginx/conf.d:/etc/nginx/conf.d
networks:
- sig-network
depends_on:
- sig_php
networks:
sig-network:
driver: bridge
laravel-network:
external: true
name: bpbd_laravel-network

23
nginx/conf.d/app.conf Normal file
View File

@ -0,0 +1,23 @@
server {
listen 80;
server_name sig-tpsnganjuk.web.id
root /var/www/public;
index index.php index.html;
access_log /var/log/nginx/sig_access.log;
error_log /var/log/nginx/sig_error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass sig_php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}