diff --git a/.devilbox/www/config.php b/.devilbox/www/config.php index 77c6c022..38f67ebb 100644 --- a/.devilbox/www/config.php +++ b/.devilbox/www/config.php @@ -13,8 +13,8 @@ error_reporting(-1); putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); -$DEVILBOX_VERSION = 'v2.3.0'; -$DEVILBOX_DATE = '2022-12-04'; +$DEVILBOX_VERSION = 'v2.4.0'; +$DEVILBOX_DATE = '2022-12-18'; $DEVILBOX_API_PAGE = 'devilbox-api/status.json'; // diff --git a/.devilbox/www/htdocs/_ajax_callback.php b/.devilbox/www/htdocs/_ajax_callback.php index d6ae14d0..c7f9ef3b 100644 --- a/.devilbox/www/htdocs/_ajax_callback.php +++ b/.devilbox/www/htdocs/_ajax_callback.php @@ -36,31 +36,32 @@ if (loadClass('Helper')->isLoggedIn()) { // else if (isset($_GET['software'])) { $no = 'not installed'; + $no_mod = 'PHP module not loaded'; $software = array(); - if ($_GET['software'] == 'composer') { + if ($_GET['software'] == 'angular_cli') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getAngularCliVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'asgardcms_installer') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getAsgardCmsInstallerVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'codeception') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getCodeceptionVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'composer') { echo json_encode(array( $_GET['software'] => (($version = loadClass('Php')->getComposerVersion()) !== false) ? $version : $no )); } - else if ($_GET['software'] == 'drupalc') { + else if ($_GET['software'] == 'deployer') { echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getDrupalConsoleVersion()) !== false) ? $version : $no - )); - } - else if ($_GET['software'] == 'drush7') { - echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getDrushVersion(7)) !== false) ? $version : $no - )); - } - else if ($_GET['software'] == 'drush8') { - echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getDrushVersion(8)) !== false) ? $version : $no - )); - } - else if ($_GET['software'] == 'drush9') { - echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getDrushVersion(9)) !== false) ? $version : $no + $_GET['software'] => (($version = loadClass('Php')->getDeployerVersion()) !== false) ? $version : $no )); } else if ($_GET['software'] == 'git') { @@ -68,9 +69,24 @@ if (loadClass('Helper')->isLoggedIn()) { $_GET['software'] => (($version = loadClass('Php')->getGitVersion()) !== false) ? $version : $no )); } - else if ($_GET['software'] == 'laravel') { + else if ($_GET['software'] == 'grunt_cli') { echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getLaravelVersion()) !== false) ? $version : $no + $_GET['software'] => (($version = loadClass('Php')->getGruntCliVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'gulp') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getGulpVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'laravel_installer') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getLaravelInstallerVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'laravel_lumen') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getLaravelLumenVersion()) !== false) ? $version : $no )); } else if ($_GET['software'] == 'mds') { @@ -78,6 +94,11 @@ if (loadClass('Helper')->isLoggedIn()) { $_GET['software'] => (($version = loadClass('Php')->getMdsVersion()) !== false) ? $version : $no )); } + else if ($_GET['software'] == 'mupdf_tools') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getMupdfToolsVersion()) !== false) ? $version : $no + )); + } else if ($_GET['software'] == 'node') { echo json_encode(array( $_GET['software'] => (($version = loadClass('Php')->getNodeVersion()) !== false) ? $version : $no @@ -88,20 +109,51 @@ if (loadClass('Helper')->isLoggedIn()) { $_GET['software'] => (($version = loadClass('Php')->getNpmVersion()) !== false) ? $version : $no )); } - else if ($_GET['software'] == 'phalcon') { + else if ($_GET['software'] == 'phalcon_devtools') { + if (!extension_loaded('phalcon')) { + echo json_encode(array( + $_GET['software'] => $no_mod + )); + } else { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getPhalconDevtoolsVersion()) !== false) ? $version : $no + )); + } + } + else if ($_GET['software'] == 'phpunit') { echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getPhalconVersion()) !== false) ? $version : $no + $_GET['software'] => (($version = loadClass('Php')->getPhpunitVersion()) !== false) ? $version : $no )); } - else if ($_GET['software'] == 'symfony') { + else if ($_GET['software'] == 'stylelint') { echo json_encode(array( - $_GET['software'] => (($version = loadClass('Php')->getSymfonyVersion()) !== false) ? $version : $no + $_GET['software'] => (($version = loadClass('Php')->getStylelintVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'symfony_cli') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getSymfonyCliVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'vue_cli') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getVueCliVersion()) !== false) ? $version : $no + )); + } + else if ($_GET['software'] == 'webpack_cli') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getWebpackCliVersion()) !== false) ? $version : $no )); } else if ($_GET['software'] == 'wpcli') { echo json_encode(array( $_GET['software'] => (($version = loadClass('Php')->getWpcliVersion()) !== false) ? $version : $no )); + } + else if ($_GET['software'] == 'yarn') { + echo json_encode(array( + $_GET['software'] => (($version = loadClass('Php')->getYarnVersion()) !== false) ? $version : $no + )); } else { echo json_encode(array($_GET['software'] => 'unknown software')); } diff --git a/.devilbox/www/htdocs/index.php b/.devilbox/www/htdocs/index.php index 6c185489..ff0f30c1 100644 --- a/.devilbox/www/htdocs/index.php +++ b/.devilbox/www/htdocs/index.php @@ -334,10 +334,117 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
-
PHP Container Setup
+
Available CLI Tools
+

You can also enter the php container via ./shell.sh and use the following cli tools:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tools
Angular Cli
AsgardCMS Installer
Codeception
Composer
Deployer
Git
Grunt Cli
Gulp
Laravel Installer
Laravel Lumen
Mupdf Tools
mysqldump-secure
Node
Npm
Phalcon Devtools
Phpunit
Stylelint
Symfony Cli
Vue Cli
Webpack Cli
Wordpress Cli
Yarn
+ +
+
+
+ +
+
+
PHP Container Status
+
+

You have made the following base configuration to the Devilbox:

-

You can also enter the php container and work from inside. The following is available inside the container:

@@ -374,78 +481,7 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
Settings
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tools
composer
drupal-console
drush7
drush8
drush9
git
Laravel installer
mysqldump-secure
node
npm
Phalcon devtools
Symfony installer
Wordpress cli
- -
-
-
- -
-
-
PHP Container Status
-
-

The PHP Docker can connect to the following services via the specified hostnames and IP addresses.

+

The PHP container can connect to the following services via the specified hostnames and IP addresses.

@@ -913,19 +949,28 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL); xhttp.open('GET', '_ajax_callback.php?software='+app, true); xhttp.send(); } + updateVersions('angular_cli'); + updateVersions('asgardcms_installer'); + updateVersions('codeception'); updateVersions('composer'); - updateVersions('drupalc'); - updateVersions('drush7'); - updateVersions('drush8'); - updateVersions('drush9'); + updateVersions('deployer'); updateVersions('git'); - updateVersions('laravel'); + updateVersions('grunt_cli'); + updateVersions('gulp'); + updateVersions('laravel_installer'); + updateVersions('laravel_lumen'); updateVersions('mds'); + updateVersions('mupdf_tools'); updateVersions('node'); updateVersions('npm'); - updateVersions('phalcon'); - updateVersions('symfony'); + updateVersions('phalcon_devtools'); + updateVersions('phpunit'); + updateVersions('stylelint'); + updateVersions('symfony_cli'); + updateVersions('vue_cli'); + updateVersions('webpack_cli'); updateVersions('wpcli'); + updateVersions('yarn'); })(); diff --git a/.devilbox/www/include/lib/container/Pgsql.php b/.devilbox/www/include/lib/container/Pgsql.php index 713aab44..0b5f1cde 100644 --- a/.devilbox/www/include/lib/container/Pgsql.php +++ b/.devilbox/www/include/lib/container/Pgsql.php @@ -71,7 +71,8 @@ class Pgsql extends BaseClass implements BaseInterface public function __destruct() { if ($this->_link) { - pg_close($this->_link); + // DO NOT CLOSE. It is kind of shared. + //pg_close($this->_link); } } @@ -148,7 +149,7 @@ class Pgsql extends BaseClass implements BaseInterface // Get schemas for each database foreach ($databases as $name => &$database) { $PSQL = new Pgsql( - $this->getIpAddress(), + $GLOBALS['PGSQL_HOST_NAME'], array( 'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'), 'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'), @@ -179,7 +180,7 @@ class Pgsql extends BaseClass implements BaseInterface public function getSchemaSize($database, $schema) { $PSQL = new Pgsql( - $this->getIpAddress(), + $GLOBALS['PGSQL_HOST_NAME'], array( 'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'), 'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'), @@ -217,7 +218,7 @@ class Pgsql extends BaseClass implements BaseInterface public function getTableCount($database, $schema) { $PSQL = new Pgsql( - $this->getIpAddress(), + $GLOBALS['PGSQL_HOST_NAME'], array( 'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'), 'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'), diff --git a/.devilbox/www/include/lib/container/Php.php b/.devilbox/www/include/lib/container/Php.php index 44d357d5..ce78160c 100644 --- a/.devilbox/www/include/lib/container/Php.php +++ b/.devilbox/www/include/lib/container/Php.php @@ -35,9 +35,19 @@ class Php extends BaseClass implements BaseInterface $uid = loadClass('Helper')->egrep('/[0-9]+/', $uid); return $uid; } - public function getGitVersion() + public function getAngularCliVersion() { - $output = loadClass('Helper')->exec('git --version 2>/dev/null', $output); + $output = loadClass('Helper')->exec('ng version 2>/dev/null | grep -i "^Angular CLI" | head -1', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getAsgardCmsInstallerVersion() + { + $output = loadClass('Helper')->exec('asgardcms --version --no-ansi 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getCodeceptionVersion() + { + $output = loadClass('Helper')->exec('codecept --version --no-ansi 2>/dev/null | grep -i ^Codecept', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } public function getComposerVersion() @@ -45,15 +55,45 @@ class Php extends BaseClass implements BaseInterface $output = loadClass('Helper')->exec('composer --version 2>/dev/null', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } - public function getDrushVersion($version) + public function getDeployerVersion() { - $output = loadClass('Helper')->exec('drush'.$version.' --version 2>/dev/null', $output); + $output = loadClass('Helper')->exec('dep --version --no-ansi 2>/dev/null | grep -i ^Deploy', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } - public function getDrupalConsoleVersion() + public function getGitVersion() { - $output = loadClass('Helper')->exec('drupal --version 2>/dev/null | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"', $output); - return loadClass('Helper')->egrep('/[0-9.]+[-rc0-9.]*/', $output); + $output = loadClass('Helper')->exec('git --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getGruntCliVersion() + { + $output = loadClass('Helper')->exec('grunt --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getGulpVersion() + { + $output = loadClass('Helper')->exec('gulp --version --no-color 2>/dev/null | head -1', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getLaravelInstallerVersion() + { + $output = loadClass('Helper')->exec('laravel --version --no-ansi 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getLaravelLumenVersion() + { + $output = loadClass('Helper')->exec('lumen --version --no-ansi 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getMdsVersion() + { + $output = loadClass('Helper')->exec('mysqldump-secure --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getMupdfToolsVersion() + { + $output = loadClass('Helper')->exec('mutool -v 2>&1', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); } public function getNodeVersion() { @@ -65,31 +105,56 @@ class Php extends BaseClass implements BaseInterface $output = loadClass('Helper')->exec('npm --version 2>/dev/null', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } - public function getLaravelVersion() - { - $output = loadClass('Helper')->exec('laravel --version 2>/dev/null', $output); - return loadClass('Helper')->egrep('/[0-9.]+/', $output); - } - public function getMdsVersion() - { - $output = loadClass('Helper')->exec('mysqldump-secure --version 2>/dev/null', $output); - return loadClass('Helper')->egrep('/[0-9.]+/', $output); - } - public function getPhalconVersion() + public function getPhalconDevtoolsVersion() { $output = loadClass('Helper')->exec('phalcon --version 2>/dev/null', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } - public function getSymfonyVersion() + public function getPhpunitVersion() + { + $output = loadClass('Helper')->exec('phpunit --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getStylelintVersion() + { + $output = loadClass('Helper')->exec('stylelint --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getSymfonyCliVersion() { $output = loadClass('Helper')->exec('symfony -V 2>/dev/null | tr -d "[:cntrl:]" | sed "s/\[[0-9]*m//g"', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } - public function getWpcliVersion() + public function getVueCliVersion() { - $output = loadClass('Helper')->exec('wp --version 2>/dev/null', $output); + $output = loadClass('Helper')->exec('vue --version 2>/dev/null', $output); return loadClass('Helper')->egrep('/[0-9.]+/', $output); } + public function getWebpackCliVersion() + { + $output = loadClass('Helper')->exec('webpack-cli --version --no-stats --no-target --no-watch --no-color 2>/dev/null | grep webpack-cli', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getWpcliVersion() + { + $output = loadClass('Helper')->exec('wp --version 2>/dev/null | grep -i ^WP', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + public function getYarnVersion() + { + $output = loadClass('Helper')->exec('yarn --version 2>/dev/null', $output); + return loadClass('Helper')->egrep('/[0-9.]+/', $output); + } + //public function getDrushVersion($version) + //{ + // $output = loadClass('Helper')->exec('drush'.$version.' --version 2>/dev/null', $output); + // return loadClass('Helper')->egrep('/[0-9.]+/', $output); + //} + //public function getDrupalConsoleVersion() + //{ + // $output = loadClass('Helper')->exec('drupal --version 2>/dev/null | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"', $output); + // return loadClass('Helper')->egrep('/[0-9.]+[-rc0-9.]*/', $output); + //} diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index c45152f6..d89084a8 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,12 +1,18 @@ --- blank_issues_enabled: false contact_links: + - name: Devilbox Discord Chat + url: https://discord.gg/2wP3V6kBj4 + about: Please notify or discuss about any other requests here. + + - name: Devilbox Discourse Forum + url: https://devilbox.discourse.group/ + about: Please ask and answer general questions here. + - name: Devilbox Community Support url: https://devilbox.discourse.group/ about: Please ask and answer questions here. - - name: Devilbox Gitter Chat - url: https://gitter.im/devilbox/Lobby - about: Please ask and answer questions here. + - name: Devilbox documentation url: https://devilbox.readthedocs.io/ about: Find the Devilbox documentation here. diff --git a/.tests/tests/framework-drupal.sh b/.tests/tests/framework-drupal.sh index 7d8648ef..0eeb4b1d 100755 --- a/.tests/tests/framework-drupal.sh +++ b/.tests/tests/framework-drupal.sh @@ -13,7 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" . "${SCRIPT_PATH}/../scripts/.lib.sh" RETRIES=10 -DISABLED_VERSIONS=("5.3" "5.4" "5.5" "5.6" "8.0" "8.1" "8.2") +DISABLED_VERSIONS=("5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2") DISABLED_MYSQL_VERSIONS=("mysql-8.0" "percona-8.0") diff --git a/CHANGELOG.md b/CHANGELOG.md index 00b9866a..4c4e56b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,52 @@ Make sure to have a look at [UPDATING.md](https://github.com/cytopia/devilbox/bl ## Unreleased +## Release v2.4.0 (2022-12-18) + +This release might be a bit bumpy due to a massive amount of changes in upstream projects. If you encounter issues, please do raise tickets. + +### General + +#### New PHP-FPM images +This release uses a new set of PHP-FPM images. They have been heavily rewritten and modularized in order to make PHP extension and PHP tool generation more easy. See the following release notes for details: + +> 499 changed files with 29,281 additions and 13,977 deletions. + +* https://github.com/devilbox/docker-php-fpm/releases/tag/0.145 +* https://github.com/devilbox/docker-php-fpm/releases/tag/0.146 +* https://github.com/devilbox/docker-php-fpm/releases/tag/0.147 + +#### How to add modules/tools? +* **[How to build PHP modules](https://github.com/devilbox/docker-php-fpm/blob/master/php_modules/README.md)** +* **[How to install tools in PHP images](https://github.com/devilbox/docker-php-fpm/blob/master/php_tools/README.md)** + +#### Available Tools +You can now also find a detailed overview about what tools are installed in what PHP version image. See here: https://github.com/devilbox/docker-php-fpm/blob/master/doc/available-tools.md + +#### Gitter -> Discord +Additionally I am moving away from Gitter to **Discord**. See reason and announcement here: https://devilbox.discourse.group/t/migrating-from-gitter-to-discord/716/2 + +**🎮 Discord:** https://discord.gg/2wP3V6kBj4 + +### Fixed +- Intranet: Fixed PostgreSQL database overview +- Fixed PATH for all pre-installed composer and node tools + +### Changed +- Updated PHP versions (https://github.com/cytopia/devilbox/issues/940) +- Updated MySQL versions +- Intranet: Improved installed tools overview (index.php) +- Intranet: Delayed message loading (https://github.com/cytopia/devilbox/pull/904) + +### Added +- Added tool `mhsendmail` for arm64 images +- Added tool `wkhtmltopdf` for arm64 images (https://github.com/cytopia/devilbox/issues/936) +- Added tool `taskfile` (https://github.com/cytopia/devilbox/issues/934) + +### Removed +- Removed tool `drush` (detail: https://github.com/cytopia/devilbox/issues/930#issuecomment-1344764908) + + ## Release v2.3.0 (2022-12-04) ### Fixed diff --git a/README.md b/README.md index 3d360d94..7607a45f 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,9 @@ **[License](#license)** ![Devilbox](docs/_includes/figures/devilbox/devilbox-intranet-dash-all.png) - [![Release](https://img.shields.io/github/release/cytopia/devilbox.svg?colorB=orange)](https://github.com/cytopia/devilbox/releases) -[![Gitter](https://badges.gitter.im/devilbox/Lobby.svg)](https://gitter.im/devilbox/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Discourse](https://img.shields.io/discourse/https/devilbox.discourse.group/status.svg?colorB=%234CB697)](https://devilbox.discourse.group) +[![Discord](https://img.shields.io/discord/1051541389256704091?color=8c9eff&label=Discord&logo=discord)](https://discord.gg/2wP3V6kBj4) +[![Discourse](https://img.shields.io/discourse/https/devilbox.discourse.group/status.svg?colorB=%234CB697&label=Discourse&logo=discourse)](https://devilbox.discourse.group) [![type](https://img.shields.io/badge/type-Docker-blue.svg)](https://www.docker.com/) [![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT) @@ -115,15 +114,15 @@ works out of the box up to a shared development infrastructure for a corporate n In order to be aware about all that features, ensure to have skimmed over the **[documentation](https://devilbox.readthedocs.io)**, so you know what can be done and how that might simplify your every-day life. If you ever run into any unforseen issues, feel free to join the -**[chat](https://gitter.im/devilbox/Lobby)** or visit the **[forums](https://devilbox.discourse.group)** and get community support quickly. +**[Discord chat](https://discord.gg/2wP3V6kBj4)** or visit the **[forums](https://devilbox.discourse.group)** and get community support quickly.
- - - - + + + + @@ -134,8 +133,8 @@ simplify your every-day life. If you ever run into any unforseen issues, feel fr - + diff --git a/docker-compose.yml b/docker-compose.yml index bbce5e9b..9deedd01 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -99,7 +99,7 @@ services: # PHP # ------------------------------------------------------------ php: - image: devilbox/php-fpm:${PHP_SERVER}-work-0.144 + image: devilbox/php-fpm:${PHP_SERVER}-work-0.147 hostname: php ## @@ -329,7 +329,7 @@ services: # MySQL Database # ------------------------------------------------------------ mysql: - image: devilbox/mysql:${MYSQL_SERVER}-0.19 + image: devilbox/mysql:${MYSQL_SERVER}-0.21 hostname: mysql environment:

Documentation

Chat

Forum

Flames

📘 Docs

🎮 Discord

🗪 Forum

🔥 Flames

- - + + @@ -151,7 +150,7 @@ simplify your every-day life. If you ever run into any unforseen issues, feel fr
devilbox.readthedocs.iogitter.im/devilboxdiscord/devilbox devilbox.discourse.group github.com/devilbox/flames