From 380f2f4029aea3a9dcb04111a8d6db657f767a39 Mon Sep 17 00:00:00 2001 From: Juan Felipe Date: Tue, 30 Jul 2024 18:17:38 -0300 Subject: [PATCH 1/2] feat: Add Mautic 4 and 5 to service templates --- public/svgs/mautic.svg | 17 +++++ templates/compose/mautic4.yaml | 46 ++++++++++++++ templates/compose/mautic5.yaml | 111 +++++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 public/svgs/mautic.svg create mode 100644 templates/compose/mautic4.yaml create mode 100644 templates/compose/mautic5.yaml diff --git a/public/svgs/mautic.svg b/public/svgs/mautic.svg new file mode 100644 index 000000000..b528f72ef --- /dev/null +++ b/public/svgs/mautic.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/templates/compose/mautic4.yaml b/templates/compose/mautic4.yaml new file mode 100644 index 000000000..f1e567453 --- /dev/null +++ b/templates/compose/mautic4.yaml @@ -0,0 +1,46 @@ +# documentation: https://www.mautic.org/ +# slogan: Mautic v4 Open Source Marketing Automation +# tags: php,mautic,marketing,automation,email,service,4,open,source,crm +# logo: svgs/mautic.svg +# port: 8880 + +services: + rabbitmq: + image: 'rabbitmq:3' + environment: + - 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST:-mautic}' + volumes: + - 'rabbitmq-data:/var/lib/rabbitmq' + database: + image: powertic/percona-docker + environment: + MYSQL_ROOT_PASSWORD: ${SERVICE_PASSWORD_64_MYSQL} + volumes: + - database:/var/lib/mysql + command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --sql-mode="" + mautic: + image: mautic/mautic:v4-fpm + volumes: + - mautic_data:/var/www/html + environment: + - SERVICE_FQDN_MAUTIC_80 + - MAUTIC_DB_HOST=database + - MAUTIC_DB_USER=root + - MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL} + - MAUTIC_DB_NAME=mautic4 + - MAUTIC_RUN_MIGRATIONS=true + - MAUTIC_RUN_CRON_JOBS=false + - MAUTIC_RABIITMQ_HOST=rabbitmq + - MAUTIC_RABIITMQ_PORT=5672 + - MAUTIC_RABIITMQ_USER=guest + - MAUTIC_RABIITMQ_PASSWORD=guest + - MAUTIC_RABIITMQ_VHOST=mautic + - MAUTIC_ADMIN_EMAIL=${MAUTIC_ADMIN_EMAIL} + - MAUTIC_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN} + - MAUTIC_ADMIN_FIRSTNAME=${MAUTIC_ADMIN_FIRSTNAME} + - MAUTIC_ADMIN_LASTNAME=${MAUTIC_ADMIN_LASTNAME} + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] + interval: 2s + timeout: 10s + retries: 15 diff --git a/templates/compose/mautic5.yaml b/templates/compose/mautic5.yaml new file mode 100644 index 000000000..309a619d2 --- /dev/null +++ b/templates/compose/mautic5.yaml @@ -0,0 +1,111 @@ +# documentation: https://www.mautic.org/ +# slogan: Mautic v5 Open Source Marketing Automation +# tags: php,mautic,marketing,automation,email,service,5,open,source,crm +# logo: svgs/mautic.svg +# port: 8880 + +services: + db: + image: 'mysql:8.0' + environment: + - 'MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_64_MYSQLROOT}' + - 'MYSQL_DATABASE=${MYSQL_DATABASE}' + - 'MYSQL_USER=${MYSQL_USER}' + - 'MYSQL_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' + volumes: + - 'mysql-data:/var/lib/mysql' + healthcheck: + test: 'mysqladmin --user=$$MYSQL_USER --password=$$SERVICE_PASSWORD_64_MYSQL ping' + start_period: 5s + interval: 5s + timeout: 5s + retries: 10 + rabbitmq: + image: 'rabbitmq:3' + environment: + - 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST}' + volumes: + - 'rabbitmq-data:/var/lib/rabbitmq' + mautic_web: + image: 'mautic/mautic:latest' + ports: + - 8880:80 + volumes: + - './mautic/config:/var/www/html/config:z' + - './mautic/logs:/var/www/html/var/logs:z' + - './mautic/media/files:/var/www/html/docroot/media/files:z' + - './mautic/media/images:/var/www/html/docroot/media/images:z' + - './cron:/opt/mautic/cron:z' + environment: + - SERVICE_FQDN_MAUTIC_80 + - 'DOCKER_MAUTIC_LOAD_TEST_DATA=${MAUTIC_LOAD_TEST_DATA:-false}' + - 'DOCKER_MAUTIC_RUN_MIGRATIONS=${MAUTIC_RUN_MIGRATIONS:-false}' + - 'MAUTIC_DB_HOST=${MYSQL_HOST}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' + - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] + interval: 2s + timeout: 10s + retries: 15 + depends_on: + db: + condition: service_healthy + mautic_cron: + image: 'mautic/mautic:latest' + links: + - 'db:mysql' + volumes: + - './mautic/config:/var/www/html/config:z' + - './mautic/logs:/var/www/html/var/logs:z' + - './mautic/media/files:/var/www/html/docroot/media/files:z' + - './mautic/media/images:/var/www/html/docroot/media/images:z' + - './cron:/opt/mautic/cron:z' + environment: + - DOCKER_MAUTIC_ROLE=mautic_cron + - 'MAUTIC_DB_HOST=${MYSQL_HOST}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' + - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + depends_on: + mautic_web: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] + interval: 2s + timeout: 10s + retries: 15 + mautic_worker: + image: 'mautic/mautic:latest' + links: + - 'db:mysql' + volumes: + - './mautic/config:/var/www/html/config:z' + - './mautic/logs:/var/www/html/var/logs:z' + - './mautic/media/files:/var/www/html/docroot/media/files:z' + - './mautic/media/images:/var/www/html/docroot/media/images:z' + - './cron:/opt/mautic/cron:z' + environment: + - DOCKER_MAUTIC_ROLE=mautic_worker + - 'MAUTIC_DB_HOST=${MYSQL_HOST}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' + - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + depends_on: + mautic_web: + condition: service_health + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] + interval: 2s + timeout: 10s + retries: 15 From 1b8365d5595ee33b445e3d3ad93456cde6bf3cae Mon Sep 17 00:00:00 2001 From: Juan Felipe Date: Thu, 19 Sep 2024 12:07:00 -0300 Subject: [PATCH 2/2] fix code review reported issues - fix typo on healthcheck conditions - fix db connections - improve some default values - add plugins and update persistance --- templates/compose/mautic5.yaml | 124 ++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 55 deletions(-) diff --git a/templates/compose/mautic5.yaml b/templates/compose/mautic5.yaml index 309a619d2..4cf7eef54 100644 --- a/templates/compose/mautic5.yaml +++ b/templates/compose/mautic5.yaml @@ -9,103 +9,117 @@ services: image: 'mysql:8.0' environment: - 'MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_64_MYSQLROOT}' - - 'MYSQL_DATABASE=${MYSQL_DATABASE}' - - 'MYSQL_USER=${MYSQL_USER}' + - 'MYSQL_DATABASE=${MYSQL_DATABASE:-mautic}' + - 'MYSQL_USER=${SERVICE_USER_MYSQL}' - 'MYSQL_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' volumes: - 'mysql-data:/var/lib/mysql' healthcheck: - test: 'mysqladmin --user=$$MYSQL_USER --password=$$SERVICE_PASSWORD_64_MYSQL ping' - start_period: 5s - interval: 5s + test: 'mysqladmin ping --silent --user=$$SERVICE_USER_MYSQL --password=$$SERVICE_PASSWORD_64_MYSQL' + start_period: 30s + interval: 10s timeout: 5s - retries: 10 + retries: 5 rabbitmq: image: 'rabbitmq:3' environment: - - 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST}' + - 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST:-mautic}' volumes: - 'rabbitmq-data:/var/lib/rabbitmq' mautic_web: image: 'mautic/mautic:latest' ports: - - 8880:80 + - '8880:80' volumes: - - './mautic/config:/var/www/html/config:z' - - './mautic/logs:/var/www/html/var/logs:z' - - './mautic/media/files:/var/www/html/docroot/media/files:z' - - './mautic/media/images:/var/www/html/docroot/media/images:z' - - './cron:/opt/mautic/cron:z' + - 'mautic_data/config:/var/www/html/config:z' + - 'mautic_data/logs:/var/www/html/var/logs:z' + - 'mautic_data/media/files:/var/www/html/docroot/media/files:z' + - 'mautic_data/media/images:/var/www/html/docroot/media/images:z' + - 'mautic_data/plugins:/var/www/html/docroot/plugins:z' + - 'mautic_data/vendor:/var/www/html/vendor:z' + - 'mautic_data/bin:/var/www/html/bin:z' + - 'mautic_data/cron:/opt/mautic/cron:z' environment: - SERVICE_FQDN_MAUTIC_80 - 'DOCKER_MAUTIC_LOAD_TEST_DATA=${MAUTIC_LOAD_TEST_DATA:-false}' - 'DOCKER_MAUTIC_RUN_MIGRATIONS=${MAUTIC_RUN_MIGRATIONS:-false}' - - 'MAUTIC_DB_HOST=${MYSQL_HOST}' - - 'MAUTIC_DB_PORT=${MYSQL_PORT}' - - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' - - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_HOST=${MYSQL_HOST:-db}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}' + - 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}' - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' - - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' - - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] - interval: 2s + test: + - CMD + - curl + - '-f' + - 'http://localhost' + interval: 15s timeout: 10s retries: 15 - depends_on: - db: - condition: service_healthy mautic_cron: image: 'mautic/mautic:latest' - links: - - 'db:mysql' volumes: - - './mautic/config:/var/www/html/config:z' - - './mautic/logs:/var/www/html/var/logs:z' - - './mautic/media/files:/var/www/html/docroot/media/files:z' - - './mautic/media/images:/var/www/html/docroot/media/images:z' - - './cron:/opt/mautic/cron:z' + - 'mautic_data/config:/var/www/html/config:z' + - 'mautic_data/logs:/var/www/html/var/logs:z' + - 'mautic_data/media/files:/var/www/html/docroot/media/files:z' + - 'mautic_data/media/images:/var/www/html/docroot/media/images:z' + - 'mautic_data/plugins:/var/www/html/docroot/plugins:z' + - 'mautic_data/vendor:/var/www/html/vendor:z' + - 'mautic_data/bin:/var/www/html/bin:z' + - 'mautic_data/cron:/opt/mautic/cron:z' environment: - DOCKER_MAUTIC_ROLE=mautic_cron - - 'MAUTIC_DB_HOST=${MYSQL_HOST}' - - 'MAUTIC_DB_PORT=${MYSQL_PORT}' - - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' - - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_HOST=${MYSQL_HOST:-db}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}' + - 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}' - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' - - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' - - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' depends_on: mautic_web: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] - interval: 2s + test: + - CMD + - curl + - '-f' + - 'http://localhost' + interval: 15s timeout: 10s retries: 15 mautic_worker: image: 'mautic/mautic:latest' - links: - - 'db:mysql' volumes: - - './mautic/config:/var/www/html/config:z' - - './mautic/logs:/var/www/html/var/logs:z' - - './mautic/media/files:/var/www/html/docroot/media/files:z' - - './mautic/media/images:/var/www/html/docroot/media/images:z' - - './cron:/opt/mautic/cron:z' + - 'mautic_data/config:/var/www/html/config:z' + - 'mautic_data/logs:/var/www/html/var/logs:z' + - 'mautic_data/media/files:/var/www/html/docroot/media/files:z' + - 'mautic_data/media/images:/var/www/html/docroot/media/images:z' + - 'mautic_data/plugins:/var/www/html/docroot/plugins:z' + - 'mautic_data/vendor:/var/www/html/vendor:z' + - 'mautic_data/bin:/var/www/html/bin:z' + - 'mautic_data/cron:/opt/mautic/cron:z' environment: - DOCKER_MAUTIC_ROLE=mautic_worker - - 'MAUTIC_DB_HOST=${MYSQL_HOST}' - - 'MAUTIC_DB_PORT=${MYSQL_PORT}' - - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE}' - - 'MAUTIC_DB_USER=${MYSQL_USER}' + - 'MAUTIC_DB_HOST=${MYSQL_HOST:-db}' + - 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}' + - 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}' + - 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}' - 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}' - - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL}' - - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT}' + - 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' + - 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}' depends_on: mautic_web: - condition: service_health + condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:80"] - interval: 2s + test: + - CMD + - curl + - '-f' + - 'http://localhost' + interval: 15s timeout: 10s retries: 15