From e74fae086770516248332087e1391984a5529016 Mon Sep 17 00:00:00 2001 From: Rick Bouma Date: Mon, 16 Jun 2025 13:40:15 +0200 Subject: [PATCH 1/4] add RedisInsight support to roll-docker-stack with configuration, environment updates, and service definition --- commands/env.cmd | 3 ++ commands/magento2-init.cmd | 36 +++++++-------------- environments/includes/redisinsight.base.yml | 20 ++++++++++++ environments/laravel/init.env | 1 + environments/magento1/init.env | 1 + environments/magento2/init.env | 1 + environments/shopware/init.env | 1 + environments/symfony/init.env | 1 + environments/typo3/init.env | 1 + utils/config.sh | 1 + 10 files changed, 41 insertions(+), 25 deletions(-) create mode 100644 environments/includes/redisinsight.base.yml diff --git a/commands/env.cmd b/commands/env.cmd index 30e063c..e59ee39 100644 --- a/commands/env.cmd +++ b/commands/env.cmd @@ -150,6 +150,9 @@ fi [[ ${ROLL_REDIS} -eq 1 ]] \ && appendEnvPartialIfExists "redis" +[[ ${ROLL_REDISINSIGHT} -eq 1 ]] \ + && appendEnvPartialIfExists "redisinsight" + [[ ${ROLL_DRAGONFLY} -eq 1 ]] \ && appendEnvPartialIfExists "dragonfly" diff --git a/commands/magento2-init.cmd b/commands/magento2-init.cmd index 41f80a0..a1b352a 100755 --- a/commands/magento2-init.cmd +++ b/commands/magento2-init.cmd @@ -89,7 +89,7 @@ get_software_versions() { PHP_VERSION="8.4" DB_DISTRIBUTION_VERSION="11.4" ELASTICSEARCH_VERSION="2.19" # OpenSearch - REDIS_VERSION="8" # Valkey + REDIS_VERSION="8.0" RABBITMQ_VERSION="4.1" VARNISH_VERSION="7.7" COMPOSER_VERSION="2" @@ -98,7 +98,7 @@ get_software_versions() { PHP_VERSION="8.3" DB_DISTRIBUTION_VERSION="11.4" ELASTICSEARCH_VERSION="2.19" # OpenSearch - REDIS_VERSION="8" # Valkey + REDIS_VERSION="8.0" RABBITMQ_VERSION="4.1" VARNISH_VERSION="7.7" COMPOSER_VERSION="2" @@ -216,16 +216,10 @@ if [[ "${ELASTICSEARCH_VERSION}" == "2."* ]]; then OPENSEARCH_VERSION="${ELASTICSEARCH_VERSION}" sed -i.bak "s/^ROLL_ELASTICSEARCH=.*/ROLL_ELASTICSEARCH=0/" "${ENV_FILE}" sed -i.bak "s/^ROLL_OPENSEARCH=.*/ROLL_OPENSEARCH=1/" "${ENV_FILE}" - # Set OpenSearch version - if ! grep -q "^OPENSEARCH_VERSION=" "${ENV_FILE}"; then - echo "OPENSEARCH_VERSION=${OPENSEARCH_VERSION}" >> "${ENV_FILE}" - else - sed -i.bak "s/^OPENSEARCH_VERSION=.*/OPENSEARCH_VERSION=${OPENSEARCH_VERSION}/" "${ENV_FILE}" - fi - # Keep Elasticsearch version for compatibility, but disabled - sed -i.bak "s/^ELASTICSEARCH_VERSION=.*/ELASTICSEARCH_VERSION=7.17/" "${ENV_FILE}" + # Replace ELASTICSEARCH_VERSION with OPENSEARCH_VERSION + sed -i.bak "s/^ELASTICSEARCH_VERSION=.*/OPENSEARCH_VERSION=${OPENSEARCH_VERSION}/" "${ENV_FILE}" # Set actual search engine version for configuration - ELASTICSEARCH_VERSION="7.17" # Fallback version + ELASTICSEARCH_VERSION="7.17" # Fallback version for installation compatibility echo -e " OpenSearch: ${OPENSEARCH_VERSION} (primary)" echo -e " Elasticsearch: ${ELASTICSEARCH_VERSION} (fallback)" else @@ -233,28 +227,20 @@ else sed -i.bak "s/^ROLL_ELASTICSEARCH=.*/ROLL_ELASTICSEARCH=1/" "${ENV_FILE}" sed -i.bak "s/^ROLL_OPENSEARCH=.*/ROLL_OPENSEARCH=0/" "${ENV_FILE}" sed -i.bak "s/^ELASTICSEARCH_VERSION=.*/ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION}/" "${ENV_FILE}" - # Ensure OpenSearch is disabled + # Ensure OpenSearch version is not present if grep -q "^OPENSEARCH_VERSION=" "${ENV_FILE}"; then sed -i.bak "/^OPENSEARCH_VERSION=/d" "${ENV_FILE}" fi fi -# Handle Redis vs Valkey (Valkey for version 8+) -if [[ "${REDIS_VERSION}" == "8" ]]; then - # Use Valkey (Redis fork) for version 8 - sed -i.bak "s/^ROLL_REDIS=.*/ROLL_REDIS=0/" "${ENV_FILE}" - sed -i.bak "s/^ROLL_DRAGONFLY=.*/ROLL_DRAGONFLY=1/" "${ENV_FILE}" - # Add Dragonfly/Valkey version if not present - if ! grep -q "^DRAGONFLY_VERSION=" "${ENV_FILE}"; then - echo "DRAGONFLY_VERSION=${REDIS_VERSION}" >> "${ENV_FILE}" - else - sed -i.bak "s/^DRAGONFLY_VERSION=.*/DRAGONFLY_VERSION=${REDIS_VERSION}/" "${ENV_FILE}" - fi -else - # Use Redis for traditional versions +# Handle Redis configuration (always use Redis for Magento 2) +# Magento 2 works best with traditional Redis, so we always use Redis regardless of version sed -i.bak "s/^ROLL_REDIS=.*/ROLL_REDIS=1/" "${ENV_FILE}" sed -i.bak "s/^ROLL_DRAGONFLY=.*/ROLL_DRAGONFLY=0/" "${ENV_FILE}" sed -i.bak "s/^REDIS_VERSION=.*/REDIS_VERSION=${REDIS_VERSION}/" "${ENV_FILE}" +# Ensure Dragonfly version is not present +if grep -q "^DRAGONFLY_VERSION=" "${ENV_FILE}"; then + sed -i.bak "/^DRAGONFLY_VERSION=/d" "${ENV_FILE}" fi # Clean up backup file diff --git a/environments/includes/redisinsight.base.yml b/environments/includes/redisinsight.base.yml new file mode 100644 index 0000000..31f9e01 --- /dev/null +++ b/environments/includes/redisinsight.base.yml @@ -0,0 +1,20 @@ +services: + redisinsight: + hostname: "${ROLL_ENV_NAME}-redisinsight" + image: redis/redisinsight:latest + labels: + - traefik.enable=true + - traefik.http.routers.${ROLL_ENV_NAME}-redisinsight.tls=true + - traefik.http.routers.${ROLL_ENV_NAME}-redisinsight.rule=Host(`redisinsight.${TRAEFIK_DOMAIN}`) + - traefik.http.services.${ROLL_ENV_NAME}-redisinsight.loadbalancer.server.port=5540 + - traefik.docker.network=${ROLL_ENV_NAME}_default + environment: + - RI_REDIS_HOST=${ROLL_ENV_NAME}-redis + - RI_REDIS_PORT=6379 + - RI_REDIS_ALIAS=${ROLL_ENV_NAME} Redis + - RI_DATABASE_MANAGEMENT=false + volumes: + - redisinsight:/data + +volumes: + redisinsight: \ No newline at end of file diff --git a/environments/laravel/init.env b/environments/laravel/init.env index 3a10cc8..1f8ed51 100644 --- a/environments/laravel/init.env +++ b/environments/laravel/init.env @@ -10,6 +10,7 @@ MONGODB_VERSION=7 ROLL_DB=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_MONGODB=0 ## Laravel Config diff --git a/environments/magento1/init.env b/environments/magento1/init.env index e45f38b..6583e92 100644 --- a/environments/magento1/init.env +++ b/environments/magento1/init.env @@ -1,6 +1,7 @@ ROLL_DB=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_DRAGONFLY=0 DB_DISTRIBUTION=mariadb diff --git a/environments/magento2/init.env b/environments/magento2/init.env index 66edd3b..3e1b135 100644 --- a/environments/magento2/init.env +++ b/environments/magento2/init.env @@ -6,6 +6,7 @@ ROLL_ELASTICVUE=0 ROLL_VARNISH=1 ROLL_RABBITMQ=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_DRAGONFLY=0 DB_DISTRIBUTION=mariadb diff --git a/environments/shopware/init.env b/environments/shopware/init.env index c5fb5ac..de898f7 100644 --- a/environments/shopware/init.env +++ b/environments/shopware/init.env @@ -1,6 +1,7 @@ ROLL_DB=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_DRAGONFLY=0 ROLL_RABBITMQ=0 ROLL_ELASTICSEARCH=0 diff --git a/environments/symfony/init.env b/environments/symfony/init.env index c5fb5ac..de898f7 100644 --- a/environments/symfony/init.env +++ b/environments/symfony/init.env @@ -1,6 +1,7 @@ ROLL_DB=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_DRAGONFLY=0 ROLL_RABBITMQ=0 ROLL_ELASTICSEARCH=0 diff --git a/environments/typo3/init.env b/environments/typo3/init.env index c15f747..ff048b3 100644 --- a/environments/typo3/init.env +++ b/environments/typo3/init.env @@ -1,6 +1,7 @@ ROLL_DB=1 ROLL_REDIS=1 +ROLL_REDISINSIGHT=1 ROLL_DRAGONFLY=0 DB_DISTRIBUTION=mariadb diff --git a/utils/config.sh b/utils/config.sh index d485b01..a7d0230 100644 --- a/utils/config.sh +++ b/utils/config.sh @@ -75,6 +75,7 @@ function initConfigSchema() { ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_ELASTICSEARCH); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_OPENSEARCH); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_ELASTICVUE); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") + ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_REDISINSIGHT); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_RABBITMQ); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_MONGODB); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") ROLL_CONFIG_SCHEMA_KEYS+=(ROLL_BROWSERSYNC); ROLL_CONFIG_SCHEMA_VALUES+=("boolean:0") From 7107268fadf1544ac5f5185169e10c22623c0556 Mon Sep 17 00:00:00 2001 From: Rick Bouma Date: Mon, 16 Jun 2025 13:54:06 +0200 Subject: [PATCH 2/4] add comprehensive README to roll-docker-stack with installation steps, feature overview, supported environments, and contribution guide --- README.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c941a36..b834627 100644 --- a/README.md +++ b/README.md @@ -1 +1,104 @@ -# roll-docker-stack +# Roll Docker Stack + +🚀 **A powerful, flexible Docker development environment for modern web applications** + +Roll Docker Stack provides pre-configured Docker environments for various frameworks and CMS platforms, making it easy to spin up consistent development environments with all the tools you need. + +## 🌟 Features + +- **Multi-Framework Support**: Magento 2, Laravel, Symfony, TYPO3, Shopware, WordPress, and more +- **Service Integration**: PHP-FPM, Nginx, MySQL/MariaDB, Redis, Elasticsearch, RabbitMQ, Varnish +- **Developer Tools**: Xdebug, MailPit (Better Mailhog Alternative), Redis Insight, ElasticVue, and more +- **Cross-Platform**: macOS, Linux, and Windows (WSL2) support +- **Local Development**: Optimized for local development environments +- **Easy Configuration**: Environment-specific settings with sensible defaults + +## 🚀 Installation + +### Installing via Homebrew (Recommended) + +RollDev may be installed via Homebrew on both macOS and Linux hosts: + +```bash +brew install dockergiant/roll/roll +roll svc up +``` + +**Updating via Homebrew:** +```bash +brew upgrade dockergiant/roll/roll +roll svc restart +``` + + +### Windows Installation (via WSL2) + +1. Install and enable WSL2 in Windows 10 +2. Install Ubuntu 20.04 or other compatible Linux version from the Windows store +3. Launch Docker for Windows, ensure WSL2 integration is enabled +4. Launch WSL from your terminal: + +```bash +wsl +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +brew install dockergiant/roll/roll +roll svc up +``` + +> **⚠️ Performance Warning**: For optimal performance, code should be located in the WSL Linux home path (`~/code/projectname`) NOT the default `/mnt/c` path mapping. + +> **💡 GUI Tools**: Windows GUI tools should use network paths: `\\wsl$\Ubuntu-20.04\home\\` + +## ⚙️ Next Steps + +### Automatic DNS Resolution + +- **Linux**: Configure DNS to resolve `*.test` to `127.0.0.1` or use `/etc/hosts` entries +- **macOS**: Automatic via BSD per-TLD resolver at `/etc/resolver/test` +- **Windows**: Manual configuration of network adapter DNS server required + +### Trusted CA Root Certificate + +RollDev uses a CA root certificate for trusted SSL certificates. The CA root is located at `~/.roll/ssl/rootca/certs/ca.cert.pem`. + +- **macOS**: Automatically added to Keychain (search for 'RollDev Proxy Local CA') +- **Linux**: Added to system trust bundle automatically +- **Firefox**: Import CA manually via Preferences → Privacy & Security → View Certificates → Authorities → Import +- **Chrome (Linux)**: Import CA via Settings → Privacy And Security → Manage Certificates → Authorities → Import + +## 📚 Full Documentation + +For complete installation instructions, configuration options, troubleshooting, and advanced usage, visit our comprehensive documentation: + +**👉 [dockergiant.github.io/rolldev](https://dockergiant.github.io/rolldev)** + +## 🛠️ Supported Environments + +- **Magento 2** - Complete e-commerce development stack +- **Magento 1** - Legacy Magento support +- **Laravel** - Modern PHP framework environment +- **Symfony** - Professional PHP development +- **TYPO3** - Enterprise CMS platform +- **Shopware** - E-commerce platform +- **WordPress** - Popular CMS environment +- **Akeneo** - PIM platform support +- **PHP** - Generic PHP development environment + +## 🤝 Contributing + +We welcome contributions! Please see our [contribution guidelines](https://dockergiant.github.io/rolldev/contributing/) for details. + +## 📄 License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## 🔗 Links + +- **Documentation**: [dockergiant.github.io/rolldev](https://dockergiant.github.io/rolldev) +- **CLI Repository**: [github.com/dockergiant/rolldev](https://github.com/dockergiant/rolldev) +- **Issues**: [github.com/dockergiant/rolldev/issues](https://github.com/dockergiant/rolldev/issues) +- **Container Packages**: [github.com/orgs/dockergiant/packages](https://github.com/orgs/dockergiant/packages?repo_name=rolldev) + +--- + +**Made with ❤️ by the Docker Giant & Disrex team** From 1b8e57d4257748e084d7c2d9a3a13a9b4ffb4dc6 Mon Sep 17 00:00:00 2001 From: Rick Bouma Date: Mon, 16 Jun 2025 13:54:06 +0200 Subject: [PATCH 3/4] add comprehensive README to roll-docker-stack with installation steps, feature overview, supported environments, and contribution guide --- README.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c941a36..b834627 100644 --- a/README.md +++ b/README.md @@ -1 +1,104 @@ -# roll-docker-stack +# Roll Docker Stack + +🚀 **A powerful, flexible Docker development environment for modern web applications** + +Roll Docker Stack provides pre-configured Docker environments for various frameworks and CMS platforms, making it easy to spin up consistent development environments with all the tools you need. + +## 🌟 Features + +- **Multi-Framework Support**: Magento 2, Laravel, Symfony, TYPO3, Shopware, WordPress, and more +- **Service Integration**: PHP-FPM, Nginx, MySQL/MariaDB, Redis, Elasticsearch, RabbitMQ, Varnish +- **Developer Tools**: Xdebug, MailPit (Better Mailhog Alternative), Redis Insight, ElasticVue, and more +- **Cross-Platform**: macOS, Linux, and Windows (WSL2) support +- **Local Development**: Optimized for local development environments +- **Easy Configuration**: Environment-specific settings with sensible defaults + +## 🚀 Installation + +### Installing via Homebrew (Recommended) + +RollDev may be installed via Homebrew on both macOS and Linux hosts: + +```bash +brew install dockergiant/roll/roll +roll svc up +``` + +**Updating via Homebrew:** +```bash +brew upgrade dockergiant/roll/roll +roll svc restart +``` + + +### Windows Installation (via WSL2) + +1. Install and enable WSL2 in Windows 10 +2. Install Ubuntu 20.04 or other compatible Linux version from the Windows store +3. Launch Docker for Windows, ensure WSL2 integration is enabled +4. Launch WSL from your terminal: + +```bash +wsl +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +brew install dockergiant/roll/roll +roll svc up +``` + +> **⚠️ Performance Warning**: For optimal performance, code should be located in the WSL Linux home path (`~/code/projectname`) NOT the default `/mnt/c` path mapping. + +> **💡 GUI Tools**: Windows GUI tools should use network paths: `\\wsl$\Ubuntu-20.04\home\\` + +## ⚙️ Next Steps + +### Automatic DNS Resolution + +- **Linux**: Configure DNS to resolve `*.test` to `127.0.0.1` or use `/etc/hosts` entries +- **macOS**: Automatic via BSD per-TLD resolver at `/etc/resolver/test` +- **Windows**: Manual configuration of network adapter DNS server required + +### Trusted CA Root Certificate + +RollDev uses a CA root certificate for trusted SSL certificates. The CA root is located at `~/.roll/ssl/rootca/certs/ca.cert.pem`. + +- **macOS**: Automatically added to Keychain (search for 'RollDev Proxy Local CA') +- **Linux**: Added to system trust bundle automatically +- **Firefox**: Import CA manually via Preferences → Privacy & Security → View Certificates → Authorities → Import +- **Chrome (Linux)**: Import CA via Settings → Privacy And Security → Manage Certificates → Authorities → Import + +## 📚 Full Documentation + +For complete installation instructions, configuration options, troubleshooting, and advanced usage, visit our comprehensive documentation: + +**👉 [dockergiant.github.io/rolldev](https://dockergiant.github.io/rolldev)** + +## 🛠️ Supported Environments + +- **Magento 2** - Complete e-commerce development stack +- **Magento 1** - Legacy Magento support +- **Laravel** - Modern PHP framework environment +- **Symfony** - Professional PHP development +- **TYPO3** - Enterprise CMS platform +- **Shopware** - E-commerce platform +- **WordPress** - Popular CMS environment +- **Akeneo** - PIM platform support +- **PHP** - Generic PHP development environment + +## 🤝 Contributing + +We welcome contributions! Please see our [contribution guidelines](https://dockergiant.github.io/rolldev/contributing/) for details. + +## 📄 License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## 🔗 Links + +- **Documentation**: [dockergiant.github.io/rolldev](https://dockergiant.github.io/rolldev) +- **CLI Repository**: [github.com/dockergiant/rolldev](https://github.com/dockergiant/rolldev) +- **Issues**: [github.com/dockergiant/rolldev/issues](https://github.com/dockergiant/rolldev/issues) +- **Container Packages**: [github.com/orgs/dockergiant/packages](https://github.com/orgs/dockergiant/packages?repo_name=rolldev) + +--- + +**Made with ❤️ by the Docker Giant & Disrex team** From 94a8e2b94a7df7decb0ff908d7260ba8de8b620b Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 16 Jun 2025 11:58:40 +0000 Subject: [PATCH 4/4] Tagged 0.4.0 --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index d15723f..1d0ba9e 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.3.2 +0.4.0