mirror of
https://github.com/hanzo-apps/templates.git
synced 2026-10-30 14:48:30 +00:00
Aggregates five OSS one-click/self-hosting catalogs into the Dokploy blueprint
shape the Hanzo PaaS consumes (meta.json array + blueprints/<id>/{template.toml,
docker-compose.yml,meta.json,logo}):
Dokploy 500 (MIT, verbatim) · Coolify 174 (Apache-2.0) · CapRover 161
(Apache-2.0) · CasaOS 85 (Apache-2.0) · Runtipi 110 (GPL-3.0)
Deduped by app identity; each source + app keeps its upstream license
(ATTRIBUTION.md). Deterministic aggregators + a hard validator (every
template.toml parses with the platform's toml lib, every compose parses as YAML,
meta.json is the expected array, and an over-HTTP fetch probe exercises all
1030) — 0 hard failures. Served natively by hanzoai/static on DOKS (no CDN/Pages/
Vercel); CI builds on the hanzo-build-linux-amd64 arc pool; operator App CR in
crs/ serves it at templates.hanzo.ai.
132 lines
4.6 KiB
YAML
132 lines
4.6 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
# -------------------------------------------------------------------------
|
|
# Service 1: Database
|
|
# -------------------------------------------------------------------------
|
|
mysql:
|
|
image: mysql:8.0
|
|
command: --default-authentication-plugin=mysql_native_password
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${MAUTIC_DB_DATABASE}
|
|
MYSQL_USER: ${MAUTIC_DB_USER}
|
|
MYSQL_PASSWORD: ${MAUTIC_DB_PASSWORD}
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Service 2: Mautic Web (The Leader)
|
|
# -------------------------------------------------------------------------
|
|
mautic:
|
|
image: mautic/mautic:5.1.1-apache
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
ports:
|
|
- 80
|
|
environment:
|
|
- DOCKER_MAUTIC_ROLE=mautic_web
|
|
- DOCKER_MAUTIC_RUN_MIGRATIONS=true
|
|
- MAUTIC_DB_HOST=${MAUTIC_DB_HOST}
|
|
- MAUTIC_DB_PORT=${MAUTIC_DB_PORT}
|
|
- MAUTIC_DB_DATABASE=${MAUTIC_DB_DATABASE}
|
|
- MAUTIC_DB_USER=${MAUTIC_DB_USER}
|
|
- MAUTIC_DB_PASSWORD=${MAUTIC_DB_PASSWORD}
|
|
- MAUTIC_URL=${MAUTIC_URL}
|
|
- MAUTIC_TRUSTED_PROXIES=${MAUTIC_TRUSTED_PROXIES}
|
|
- MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}
|
|
- MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}
|
|
- PHP_INI_DATE_TIMEZONE=${PHP_INI_DATE_TIMEZONE}
|
|
- PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT}
|
|
volumes:
|
|
- mautic_data:/var/www/html
|
|
# AUTOMATION FIX 1: Force permissions to be correct on every start
|
|
entrypoint: ["/bin/sh", "-c", "chown -R www-data:www-data /var/www/html && /entrypoint.sh apache2-foreground"]
|
|
# AUTOMATION FIX 2: Check if the CONFIG FILE exists. If not, report 'unhealthy'.
|
|
# This signals the other containers to keep waiting.
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "test -f /var/www/html/config/local.php || exit 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 300s # Give you 5 mins to run the installer before marking failed
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Service 3: Mautic Cron (Waits for Install)
|
|
# -------------------------------------------------------------------------
|
|
mautic-cron:
|
|
image: mautic/mautic:5.1.1-apache
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mautic:
|
|
condition: service_healthy # AUTOMATION FIX 3: Do not start until config file exists
|
|
environment:
|
|
- DOCKER_MAUTIC_ROLE=mautic_cron
|
|
- MAUTIC_DB_HOST=${MAUTIC_DB_HOST}
|
|
- MAUTIC_DB_PORT=${MAUTIC_DB_PORT}
|
|
- MAUTIC_DB_DATABASE=${MAUTIC_DB_DATABASE}
|
|
- MAUTIC_DB_USER=${MAUTIC_DB_USER}
|
|
- MAUTIC_DB_PASSWORD=${MAUTIC_DB_PASSWORD}
|
|
- MAUTIC_URL=${MAUTIC_URL}
|
|
- PHP_INI_DATE_TIMEZONE=${PHP_INI_DATE_TIMEZONE}
|
|
volumes:
|
|
- mautic_data:/var/www/html
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Service 4: Mautic Worker (Waits for Install)
|
|
# -------------------------------------------------------------------------
|
|
mautic-worker:
|
|
image: mautic/mautic:5.1.1-apache
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mautic:
|
|
condition: service_healthy # AUTOMATION FIX 3: Do not start until config file exists
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
environment:
|
|
- DOCKER_MAUTIC_ROLE=mautic_worker
|
|
- DOCKER_MAUTIC_WORKERS_CONSUME_EMAIL=2
|
|
- DOCKER_MAUTIC_WORKERS_CONSUME_HIT=2
|
|
- DOCKER_MAUTIC_WORKERS_CONSUME_FAILED=2
|
|
- MAUTIC_DB_HOST=${MAUTIC_DB_HOST}
|
|
- MAUTIC_DB_PORT=${MAUTIC_DB_PORT}
|
|
- MAUTIC_DB_DATABASE=${MAUTIC_DB_DATABASE}
|
|
- MAUTIC_DB_USER=${MAUTIC_DB_USER}
|
|
- MAUTIC_DB_PASSWORD=${MAUTIC_DB_PASSWORD}
|
|
- MAUTIC_URL=${MAUTIC_URL}
|
|
- MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}
|
|
- MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}
|
|
- PHP_INI_DATE_TIMEZONE=${PHP_INI_DATE_TIMEZONE}
|
|
volumes:
|
|
- mautic_data:/var/www/html
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Service 5: phpMyAdmin
|
|
# -------------------------------------------------------------------------
|
|
phpmyadmin:
|
|
image: phpmyadmin/phpmyadmin
|
|
restart: unless-stopped
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
environment:
|
|
PMA_HOST: mysql
|
|
PMA_PORT: 3306
|
|
UPLOAD_LIMIT: 64M
|
|
ports:
|
|
- 80
|
|
|
|
volumes:
|
|
mysql_data:
|
|
mautic_data:
|