diff --git a/blueprints/joomla/docker-compose.yml b/blueprints/joomla/docker-compose.yml new file mode 100644 index 000000000..e83a420bf --- /dev/null +++ b/blueprints/joomla/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.8" + +services: + joomla: + image: joomla:6.1.0-apache + restart: unless-stopped + depends_on: + joomla-db: + condition: service_healthy + expose: + - "80" + environment: + JOOMLA_DB_HOST: joomla-db + JOOMLA_DB_USER: ${JOOMLA_DB_USER} + JOOMLA_DB_PASSWORD: ${JOOMLA_DB_PASSWORD} + JOOMLA_DB_NAME: ${JOOMLA_DB_NAME} + JOOMLA_SITE_NAME: ${JOOMLA_SITE_NAME} + JOOMLA_ADMIN_USER: ${JOOMLA_ADMIN_USER} + JOOMLA_ADMIN_USERNAME: ${JOOMLA_ADMIN_USERNAME} + JOOMLA_ADMIN_PASSWORD: ${JOOMLA_ADMIN_PASSWORD} + JOOMLA_ADMIN_EMAIL: ${JOOMLA_ADMIN_EMAIL} + volumes: + - joomla-data:/var/www/html + + joomla-db: + image: mariadb:11.4 + restart: unless-stopped + environment: + MARIADB_DATABASE: ${JOOMLA_DB_NAME} + MARIADB_USER: ${JOOMLA_DB_USER} + MARIADB_PASSWORD: ${JOOMLA_DB_PASSWORD} + MARIADB_RANDOM_ROOT_PASSWORD: "1" + volumes: + - joomla-db:/var/lib/mysql + healthcheck: + test: ["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + +volumes: + joomla-data: + joomla-db: diff --git a/blueprints/joomla/joomla.svg b/blueprints/joomla/joomla.svg new file mode 100644 index 000000000..27239ba8b --- /dev/null +++ b/blueprints/joomla/joomla.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/blueprints/joomla/template.toml b/blueprints/joomla/template.toml new file mode 100644 index 000000000..4f360d66a --- /dev/null +++ b/blueprints/joomla/template.toml @@ -0,0 +1,51 @@ +[variables] +main_domain = "${domain}" +site_name = "Joomla" +admin_name = "Joomla Administrator" +admin_username = "${username}" +admin_password = "${password:24}" +admin_email = "${email}" +db_user = "joomla" +db_password = "${password:32}" +db_name = "joomla" + +[[config.domains]] +serviceName = "joomla" +port = 80 +host = "${main_domain}" +path = "/" + +[[config.mounts]] +filePath = "README.md" +content = """# Joomla + +This template deploys Joomla CMS with MariaDB using the official Joomla Apache image. + +## Access + +- URL: `http://${main_domain}` +- Administrator username: the configured `admin_username` value +- Administrator password: the generated `admin_password` value +- Administrator email: the configured `admin_email` value + +The template uses Joomla's auto-deployment environment variables so the site and administrator account are initialized on first start. + +## Storage + +The template creates persistent volumes for: + +- Joomla application files at `/var/www/html` +- MariaDB data at `/var/lib/mysql` + +Back up both volumes together before upgrades or migrations. +""" + +[config.env] +JOOMLA_SITE_NAME = "${site_name}" +JOOMLA_ADMIN_USER = "${admin_name}" +JOOMLA_ADMIN_USERNAME = "${admin_username}" +JOOMLA_ADMIN_PASSWORD = "${admin_password}" +JOOMLA_ADMIN_EMAIL = "${admin_email}" +JOOMLA_DB_USER = "${db_user}" +JOOMLA_DB_PASSWORD = "${db_password}" +JOOMLA_DB_NAME = "${db_name}" diff --git a/meta.json b/meta.json index 8be7825d7..80944e2c4 100644 --- a/meta.json +++ b/meta.json @@ -3347,6 +3347,24 @@ "open-source" ] }, + { + "id": "joomla", + "name": "Joomla", + "version": "6.1.0-apache", + "description": "Joomla is a flexible open-source content management system for building websites, portals, and online applications.", + "logo": "joomla.svg", + "links": { + "github": "https://github.com/joomla/joomla-cms", + "website": "https://www.joomla.org/", + "docs": "https://manual.joomla.org/" + }, + "tags": [ + "cms", + "website", + "php", + "mariadb" + ] + }, { "id": "kaneo", "name": "Kaneo",