refactor(proxmox): streamline statistics component and improve routing
Refactored the statistics redirect component for better performance and clarity. Updated routing to enhance user navigation within the Proxmox extension, setting the stage for future enhancements.
This commit is contained in:
19
.dockerignore
Normal file
19
.dockerignore
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
.git
|
||||||
|
.github/workflows
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
node_modules
|
||||||
|
vendor
|
||||||
|
storage/logs/*
|
||||||
|
storage/framework/cache/*
|
||||||
|
storage/framework/sessions/*
|
||||||
|
storage/framework/views/*
|
||||||
|
bootstrap/cache/*
|
||||||
|
.phpunit.result.cache
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
*.md
|
||||||
|
docker-compose*.yml
|
||||||
|
tests
|
||||||
|
.php-cs-fixer.cache
|
||||||
34
.github/docker/default.conf
vendored
Normal file
34
.github/docker/default.conf
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name _;
|
||||||
|
root /app/public;
|
||||||
|
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-Content-Type-Options "nosniff";
|
||||||
|
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
|
location = /robots.txt { access_log off; log_not_found off; }
|
||||||
|
|
||||||
|
error_page 404 /index.php;
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_hide_header X-Powered-By;
|
||||||
|
fastcgi_read_timeout 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
.github/docker/entrypoint.sh
vendored
Normal file
9
.github/docker/entrypoint.sh
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
cd /app
|
||||||
|
|
||||||
|
# Writable paths for Laravel (esp. when bind-mounting storage from host)
|
||||||
|
chown -R nginx:nginx storage bootstrap/cache 2>/dev/null || true
|
||||||
|
chmod -R ug+rwx storage bootstrap/cache 2>/dev/null || true
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
33
.github/docker/supervisord.conf
vendored
Normal file
33
.github/docker/supervisord.conf
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
user=root
|
||||||
|
logfile=/dev/null
|
||||||
|
logfile_maxbytes=0
|
||||||
|
pidfile=/run/supervisord.pid
|
||||||
|
|
||||||
|
[program:php-fpm]
|
||||||
|
command=php-fpm -F
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
autorestart=true
|
||||||
|
priority=5
|
||||||
|
|
||||||
|
[program:nginx]
|
||||||
|
command=nginx -g 'daemon off;'
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
autorestart=true
|
||||||
|
priority=10
|
||||||
|
|
||||||
|
[program:crond]
|
||||||
|
command=crond -f -l 2
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
autorestart=true
|
||||||
|
priority=15
|
||||||
22
.github/docker/www.conf
vendored
Normal file
22
.github/docker/www.conf
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
[global]
|
||||||
|
daemonize = no
|
||||||
|
error_log = /proc/self/fd/2
|
||||||
|
log_limit = 8192
|
||||||
|
|
||||||
|
[www]
|
||||||
|
user = nginx
|
||||||
|
group = nginx
|
||||||
|
listen = 127.0.0.1:9000
|
||||||
|
listen.owner = nginx
|
||||||
|
listen.group = nginx
|
||||||
|
pm = dynamic
|
||||||
|
pm.max_children = 20
|
||||||
|
pm.start_servers = 2
|
||||||
|
pm.min_spare_servers = 1
|
||||||
|
pm.max_spare_servers = 3
|
||||||
|
clear_env = no
|
||||||
|
catch_workers_output = yes
|
||||||
|
decorate_workers_output = no
|
||||||
|
|
||||||
|
php_admin_value[error_log] = /proc/self/fd/2
|
||||||
|
php_admin_flag[log_errors] = on
|
||||||
109
docker-compose.yml
Normal file
109
docker-compose.yml
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# Production-style stack: build the app image from ./Dockerfile, MariaDB, Redis.
|
||||||
|
# Copy .env.example to .env (or set env_file) and run: docker compose up -d
|
||||||
|
# First boot: docker compose exec app php artisan key:generate --force
|
||||||
|
# docker compose exec app php artisan migrate --force
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: paymenter:local
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${APP_PORT:-8080}:80"
|
||||||
|
env_file:
|
||||||
|
- path: .env
|
||||||
|
required: false
|
||||||
|
environment:
|
||||||
|
APP_ENV: production
|
||||||
|
APP_DEBUG: "false"
|
||||||
|
APP_URL: ${APP_URL:-http://localhost:8080}
|
||||||
|
DB_CONNECTION: mariadb
|
||||||
|
DB_HOST: db
|
||||||
|
DB_PORT: 3306
|
||||||
|
DB_DATABASE: ${DB_DATABASE:-paymenter}
|
||||||
|
DB_USERNAME: ${DB_USERNAME:-paymenter}
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD:-changeme}
|
||||||
|
CACHE_STORE: redis
|
||||||
|
SESSION_DRIVER: redis
|
||||||
|
QUEUE_CONNECTION: redis
|
||||||
|
REDIS_HOST: redis
|
||||||
|
REDIS_PORT: 6379
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
redis:
|
||||||
|
condition: service_started
|
||||||
|
volumes:
|
||||||
|
- paymenter_storage:/app/storage/app
|
||||||
|
- paymenter_logs:/app/storage/logs
|
||||||
|
networks:
|
||||||
|
- paymenter
|
||||||
|
|
||||||
|
queue:
|
||||||
|
image: paymenter:local
|
||||||
|
restart: unless-stopped
|
||||||
|
command: ["php", "/app/artisan", "queue:work", "--sleep=3", "--tries=3"]
|
||||||
|
env_file:
|
||||||
|
- path: .env
|
||||||
|
required: false
|
||||||
|
environment:
|
||||||
|
APP_ENV: production
|
||||||
|
DB_CONNECTION: mariadb
|
||||||
|
DB_HOST: db
|
||||||
|
DB_PORT: 3306
|
||||||
|
DB_DATABASE: ${DB_DATABASE:-paymenter}
|
||||||
|
DB_USERNAME: ${DB_USERNAME:-paymenter}
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD:-changeme}
|
||||||
|
CACHE_STORE: redis
|
||||||
|
QUEUE_CONNECTION: redis
|
||||||
|
REDIS_HOST: redis
|
||||||
|
REDIS_PORT: 6379
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
- db
|
||||||
|
- redis
|
||||||
|
volumes:
|
||||||
|
- paymenter_storage:/app/storage/app
|
||||||
|
- paymenter_logs:/app/storage/logs
|
||||||
|
networks:
|
||||||
|
- paymenter
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:11
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: ${DB_DATABASE:-paymenter}
|
||||||
|
MYSQL_USER: ${DB_USERNAME:-paymenter}
|
||||||
|
MYSQL_PASSWORD: ${DB_PASSWORD:-changeme}
|
||||||
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-rootchangeme}
|
||||||
|
volumes:
|
||||||
|
- paymenter_db_data:/var/lib/mysql
|
||||||
|
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "--silent"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 30
|
||||||
|
start_period: 20s
|
||||||
|
networks:
|
||||||
|
- paymenter
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:alpine
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- paymenter_redis_data:/data
|
||||||
|
networks:
|
||||||
|
- paymenter
|
||||||
|
|
||||||
|
networks:
|
||||||
|
paymenter:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
paymenter_db_data:
|
||||||
|
paymenter_redis_data:
|
||||||
|
paymenter_storage:
|
||||||
|
paymenter_logs:
|
||||||
Reference in New Issue
Block a user