update config

This commit is contained in:
Abbauf GIT 2025-10-22 11:29:38 +07:00
parent 9e7ef1b825
commit 6c1f5b4edc
344 changed files with 1938 additions and 385 deletions

View File

@ -1,74 +1,32 @@
# ======================================== # Dependencies
# Docker Ignore File node_modules/
# ======================================== vendor/
# Git # Build artifacts
.git /public/build
.gitignore /public/hot
.gitattributes /public/storage
/storage/*.key
# Documentation # Environment files
README.md .env
CHANGELOG.md .env.backup
Documentation/ .env.production
*.md
# Tests # IDE files
tests/
phpunit.xml
.phpunit.cache
.phpunit.result.cache
# IDE & Editors
.vscode/ .vscode/
.idea/ .idea/
.fleet/
.nova/
.zed/
*.swp *.swp
*.swo *.swo
*~
# OS generated files
.DS_Store .DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db Thumbs.db
.phpactor.json
# Docker files (tidak perlu di-copy ke image)
Dockerfile
docker-compose*.yml
.dockerignore
# Environment files (akan di-set via environment variables)
.env
.env.*
!.env.example
# Dependencies (akan di-install via composer & npm)
/vendor/
/node_modules/
# Build artifacts (akan di-build di stage terpisah)
/public/hot
/public/build
# Storage & Cache (akan di-mount sebagai volume)
/storage/*.key
/storage/logs/*
/storage/framework/cache/*
/storage/framework/sessions/*
/storage/framework/views/*
/storage/pail
# Generated files
/public/storage
/bootstrap/cache/*
# Local development files
Homestead.json
Homestead.yaml
auth.json
.vagrant
.phpstorm.meta.php
_ide_helper.php
# Logs # Logs
*.log *.log
@ -76,7 +34,86 @@ npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
# OS Files # Runtime data
.DS_Store pids
Thumbs.db *.pid
desktop.ini *.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
# nyc test coverage
.nyc_output
# Dependency directories
jspm_packages/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Laravel specific
/bootstrap/cache/*.php
/storage/app/*
!/storage/app/.gitignore
/storage/framework/cache/*
!/storage/framework/cache/.gitignore
/storage/framework/sessions/*
!/storage/framework/sessions/.gitignore
/storage/framework/testing/*
!/storage/framework/testing/.gitignore
/storage/framework/views/*
!/storage/framework/views/.gitignore
/storage/logs/*
!/storage/logs/.gitignore
# Testing
/coverage
/.phpunit.result.cache
/phpunit.xml
# Backup files
*.bak
*.backup
*.sql
# Documentation
README.md
Documentation/

View File

@ -1,91 +1,57 @@
# ======================================== # Use PHP 8.2 with Apache
# Stage 1: Build Frontend Assets (Vue.js) FROM php:8.2-apache
# ========================================
FROM node:20-alpine as node_builder
WORKDIR /app
# Copy package files untuk caching layer
COPY package*.json ./
# Install dependencies
RUN npm ci --legacy-peer-deps
# Copy seluruh source code
COPY . .
# Build production assets
RUN npm run build
# ========================================
# Stage 2: Laravel Application
# ========================================
FROM php:8.3-fpm-alpine
# Install system dependencies dan PHP extensions
RUN apk update && apk add --no-cache \
git \
unzip \
libzip-dev \
libpng-dev \
oniguruma-dev \
libxml2-dev \
curl \
mysql-client \
autoconf \
g++ \
make \
&& docker-php-ext-install \
pdo_mysql \
zip \
gd \
mbstring \
exif \
pcntl \
bcmath \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& apk del autoconf g++ make \
&& rm -rf /var/cache/apk/* /tmp/*
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Set working directory # Set working directory
WORKDIR /var/www/html WORKDIR /var/www/html
# Copy composer files untuk caching layer # Install system dependencies
COPY composer.json composer.lock ./ RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
libzip-dev \
zip \
unzip \
nodejs \
npm \
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
# Install Redis extension
RUN pecl install redis && docker-php-ext-enable redis
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Enable Apache mod_rewrite
RUN a2enmod rewrite
# Copy Apache configuration
COPY docker/apache/000-default.conf /etc/apache2/sites-available/000-default.conf
# Copy application files
COPY . /var/www/html
# Set proper permissions
RUN chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html/storage \
&& chmod -R 755 /var/www/html/bootstrap/cache
# Install PHP dependencies # Install PHP dependencies
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist RUN composer install --no-dev --optimize-autoloader
# Copy application source code # Install Node.js dependencies and build assets
COPY . . RUN npm install && npm run build
# Copy hasil build Vue dari stage 1 # Create .env file if it doesn't exist
COPY --from=node_builder /app/public/build /var/www/html/public/build RUN if [ ! -f .env ]; then cp .env.example .env; fi
# Generate autoload files dengan optimasi # Generate application key
RUN composer dump-autoload --optimize --classmap-authoritative RUN php artisan key:generate
# Create required directories dan set permissions # Expose port 80
RUN mkdir -p \ EXPOSE 80
storage/framework/cache \
storage/framework/sessions \
storage/framework/views \
storage/logs \
bootstrap/cache \
&& chown -R www-data:www-data \
/var/www/html/storage \
/var/www/html/bootstrap/cache \
&& chmod -R 775 \
/var/www/html/storage \
/var/www/html/bootstrap/cache
# Switch ke user non-root untuk keamanan # Start Apache
USER www-data CMD ["apache2-foreground"]
EXPOSE 9000
CMD ["php-fpm"]

0
bootstrap/cache/.gitignore vendored Normal file → Executable file
View File

View File

@ -1,176 +1,79 @@
version: '3.8' version: '3.8'
services: services:
# ======================================== app:
# Laravel PHP-FPM Application
# ========================================
laravel:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: abbauf_kasir_app container_name: kasir-app
restart: unless-stopped restart: unless-stopped
working_dir: /var/www/html working_dir: /var/www/html
volumes: volumes:
# Mount storage untuk uploads dan logs (persistent) - ./:/var/www/html
- ./storage/app/public:/var/www/html/storage/app/public - ./docker/mysql/backups:/var/www/html/docker/mysql/backups
# Mount public build assets (read-only)
- ./public/build:/var/www/html/public/build:ro
environment:
# Application
APP_NAME: ${APP_NAME:-Abbauf-Kasir}
APP_ENV: ${APP_ENV:-production}
APP_KEY: ${APP_KEY}
APP_DEBUG: ${APP_DEBUG:-false}
APP_URL: ${APP_URL:-http://localhost}
# Database
DB_CONNECTION: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_DATABASE: ${DB_DATABASE:-kasir_db}
DB_USERNAME: ${DB_USERNAME:-kasir_user}
DB_PASSWORD: ${DB_PASSWORD}
# Cache & Session
CACHE_STORE: redis
SESSION_DRIVER: redis
REDIS_HOST: redis
REDIS_PORT: 6379
# Queue
QUEUE_CONNECTION: redis
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_started
networks:
- kasir_network
# healthcheck:
# test: ["CMD", "php-fpm", "-t"]
# interval: 30s
# timeout: 10s
# retries: 3
# ========================================
# Nginx Web Server
# ========================================
nginx:
image: nginx:alpine
container_name: abbauf_kasir_nginx
restart: unless-stopped
ports: ports:
- "${APP_PORT:-80}:80" - "8000:80"
volumes: environment:
# Nginx configuration - APP_ENV=local
- ./nginx.conf:/etc/nginx/conf.d/default.conf - APP_DEBUG=true
# Laravel public directory (untuk static assets) - DB_HOST=mysql
- ./public:/var/www/html/public - DB_PORT=3306
# Storage symlink untuk file uploads - DB_DATABASE=kasir_db
- ./storage/app/public:/var/www/html/public/storage - DB_USERNAME=kasir_user
- DB_PASSWORD=kasir_password
- REDIS_HOST=redis
- REDIS_PORT=6379
depends_on: depends_on:
- laravel - mysql
networks: - redis
- kasir_network
# healthcheck:
# test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"]
# interval: 30s
# timeout: 10s
# retries: 3
# ========================================
# MySQL Database
# ========================================
mysql: mysql:
image: mysql:8.4 image: mysql:5.7
container_name: abbauf_kasir_db container_name: kasir-mysql
restart: unless-stopped restart: unless-stopped
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root_secret_password} MYSQL_DATABASE: kasir_db
MYSQL_DATABASE: ${DB_DATABASE:-kasir_db} MYSQL_ROOT_PASSWORD: kasir_password
MYSQL_USER: ${DB_USERNAME:-kasir_user} MYSQL_USER: kasir_user
MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_PASSWORD: kasir_password
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
ports:
- "${DB_PORT:-3306}:3306"
volumes: volumes:
- mysql_data:/var/lib/mysql - ./docker/mysql/mysql_data:/var/lib/mysql
# Optional: backup folder
- ./docker/mysql/backups:/backups - ./docker/mysql/backups:/backups
networks: ports:
- kasir_network - "3308:3306"
# healthcheck:
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-root_secret_password}"]
# interval: 10s
# timeout: 5s
# retries: 5
# command: --default-authentication-plugin=mysql_native_password
# ========================================
# Redis Cache & Session Store
# ========================================
redis: redis:
image: redis:7-alpine image: redis:7-alpine
container_name: abbauf_kasir_redis container_name: kasir-redis
restart: unless-stopped restart: unless-stopped
ports: ports:
- "${REDIS_PORT:-6379}:6379" - "6380:6379"
volumes: volumes:
- redis_data:/data - ./docker/redis/redis_data:/data
networks:
- kasir_network
# healthcheck:
# test: ["CMD", "redis-cli", "ping"]
# interval: 10s
# timeout: 5s
# retries: 3
command: redis-server --appendonly yes
# ======================================== # phpmyadmin:
# Queue Worker (Optional - untuk background jobs) # image: phpmyadmin/phpmyadmin
# ======================================== # container_name: kasir-phpmyadmin
queue: # restart: unless-stopped
build: # environment:
context: . # PMA_HOST: mysql
dockerfile: Dockerfile # PMA_PORT: 3306
container_name: abbauf_kasir_queue # PMA_USER: ${DB_USERNAME}
restart: unless-stopped # PMA_PASSWORD: ${DB_PASSWORD}
working_dir: /var/www/html # ports:
volumes: # - "8080:80"
- ./storage:/var/www/html/storage # depends_on:
environment: # - mysql
APP_ENV: ${APP_ENV:-production} # networks:
APP_KEY: ${APP_KEY} # - kasir-network
DB_CONNECTION: mysql
DB_HOST: mysql # volumes:
DB_PORT: 3306 # mysql_data:
DB_DATABASE: ${DB_DATABASE:-kasir_db} # driver: local
DB_USERNAME: ${DB_USERNAME:-kasir_user} # redis_data:
DB_PASSWORD: ${DB_PASSWORD} # driver: local
REDIS_HOST: redis
QUEUE_CONNECTION: redis
depends_on:
- laravel
- redis
- mysql
networks:
- kasir_network
command: php artisan queue:work --tries=3 --timeout=90
# ========================================
# Networks
# ========================================
networks: networks:
kasir_network: default:
driver: bridge external: true
name: kasir_kasir_network
# ========================================
# Persistent Volumes
# ========================================
volumes:
mysql_data:
driver: local
redis_data:
driver: local

View File

@ -0,0 +1,12 @@
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

View File

@ -0,0 +1,2 @@
[auto]
server-uuid=79710a58-aeaa-11f0-a626-0242ac150002

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,135 @@
10,69
10,29
10,93
10,2
10,3
11,13
11,4
11,8
11,17
11,15
11,16
11,7
11,2
11,3
9,5
9,2
9,3
8,7
8,5
8,2
8,3
0,457
12,2
12,1
12,3
20,2
20,1
20,3
19,2
19,1
19,3
18,1
18,3
14,1
11,28
11,27
11,26
14,5
11,25
11,24
14,3
13,1
11,23
11,22
13,3
11,21
11,20
11,1
11,19
10,303
10,302
10,301
10,300
10,299
10,298
10,297
10,296
2,2
10,295
2,1
10,294
10,293
10,292
2,3
10,291
10,290
10,289
10,288
10,287
10,286
10,285
10,284
10,283
10,282
10,281
10,280
10,279
10,278
10,277
10,276
10,275
10,274
10,273
10,272
10,271
10,270
10,269
10,268
10,267
10,266
10,265
10,264
10,263
10,262
10,261
10,260
10,259
10,258
10,257
10,256
10,255
10,254
10,253
10,252
10,251
10,250
10,249
10,248
10,247
10,246
10,245
10,244
10,243
10,242
10,241
10,240
10,239
10,238
10,237
10,236
10,235
10,234
10,233
10,232
10,231
10,230
10,229
10,228
10,227
10,226
10,225
10,224
10,223
10,222
10,221

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
default-character-set=latin1
default-collation=latin1_swedish_ci

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
/var/run/mysqld/mysqld.sock

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
ÿlocalhost performance_schema mysql.session ÿlocalhost sys mysql.sys ÿ% kasir\_db kasir_user 

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
default-character-set=latin1
default-collation=latin1_swedish_ci

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More