From e545e350e4a4b9ddd54240f2d687b7725d50e675 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 31 Mar 2026 01:15:51 -0300 Subject: [PATCH] Agregando moka --- stacks/moka/.env.example | 62 +++++++++++++++++++ stacks/moka/compose.traefik.yml | 0 stacks/moka/compose.yml | 103 ++++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 stacks/moka/.env.example create mode 100644 stacks/moka/compose.traefik.yml create mode 100644 stacks/moka/compose.yml diff --git a/stacks/moka/.env.example b/stacks/moka/.env.example new file mode 100644 index 0000000..8b9829d --- /dev/null +++ b/stacks/moka/.env.example @@ -0,0 +1,62 @@ +APP_NAME=Moka +APP_ENV=production +APP_KEY= +APP_DEBUG=false + +APP_URL=http://localhost + +APP_LOCALE=es +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US +APP_MAINTENANCE_DRIVER=file + +PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=pgsql +DB_HOST=pgsql +DB_PORT=5432 +DB_DATABASE=moka +DB_USERNAME=moka +DB_PASSWORD=secret + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database +CACHE_STORE=database + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/stacks/moka/compose.traefik.yml b/stacks/moka/compose.traefik.yml new file mode 100644 index 0000000..e69de29 diff --git a/stacks/moka/compose.yml b/stacks/moka/compose.yml new file mode 100644 index 0000000..79f79ad --- /dev/null +++ b/stacks/moka/compose.yml @@ -0,0 +1,103 @@ +x-app-base: &app-base + image: git.skrd.fun/skrd/moka:latest + restart: unless-stopped + env_file: + - .env + +x-healthcheck-common: &healthcheck + interval: 10s + timeout: 5s + retries: 3 + start_period: 20s + +services: + app: + <<: *app-base + depends_on: + pgsql: + condition: service_healthy + redis: + condition: service_healthy + environment: + CONTAINER_ROLE: web + volumes: + - ${DATA_DIR}/storage:/app/storage + healthcheck: + <<: *healthcheck + test: ["CMD", "php", "-r", "exit((int) !@fsockopen('127.0.0.1', 8000));"] + + queue: + <<: *app-base + depends_on: + app: + condition: service_healthy + pgsql: + condition: service_healthy + redis: + condition: service_healthy + environment: + CONTAINER_ROLE: queue + volumes: + - ${DATA_DIR}/storage:/app/storage + healthcheck: + <<: *healthcheck + test: + [ + "CMD", + "php", + "-r", + "$$cmd = str_replace(\"\\0\", ' ', (string) file_get_contents('/proc/1/cmdline')); exit(str_contains($$cmd, 'artisan queue:work') ? 0 : 1);", + ] + + scheduler: + <<: *app-base + depends_on: + app: + condition: service_healthy + pgsql: + condition: service_healthy + redis: + condition: service_healthy + environment: + CONTAINER_ROLE: scheduler + volumes: + - ${DATA_DIR}/storage:/app/storage + healthcheck: + <<: *healthcheck + test: + [ + "CMD", + "php", + "-r", + "$$cmd = str_replace(\"\\0\", ' ', (string) file_get_contents('/proc/1/cmdline')); exit(str_contains($$cmd, 'artisan schedule:work') ? 0 : 1);", + ] + + pgsql: + image: postgres:18 + restart: unless-stopped + shm_size: 128mb + environment: + PGPASSWORD: "${DB_PASSWORD:-secret}" + POSTGRES_DB: "${DB_DATABASE}" + POSTGRES_USER: "${DB_USERNAME}" + POSTGRES_PASSWORD: "${DB_PASSWORD:-secret}" + volumes: + - ${DATA_DIR}/db:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + + redis: + image: redis:alpine + restart: unless-stopped + volumes: + - ${DATA_DIR}/cache:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 5s