diff --git a/boilerplate/README.md b/boilerplate/README.md
index 4ed5bb27c0ac31ea065998a4d2784dcdf6e75491..b8b95f12ea748be62b560b4b6ebde2ae64fa19df 100644
--- a/boilerplate/README.md
+++ b/boilerplate/README.md
@@ -29,7 +29,7 @@ $ docker-compose -f docker-compose.yml start
 ### machine(s) php
 
 * un ou plusieurs services php/apache ou php-cli
-* basés sur les images `canals/php`, les tags `:8.0`,`:8.0-cli`, `:7.4`,`:latest`,`:7.4-cli`, `:7.3`,`:7.3-cli`, `:7.2` et `7.2-cli`, `:7.1` 
+* basés sur les images `canals/php`, les tags `:8.1`,`:8.1-cli`, `:latest`, `:8.0`,`:8.0-cli`, `:7.4`,`:7.4-cli`, `:7.3`,`:7.3-cli`, `:7.2` et `7.2-cli`, `:7.1` 
 et `7.1-cli`,`:5.6` sont utilisables (pour plus de détails sur ces images, 
 voir la [doc](https://hub.docker.com/r/canals/php/) )
 * conseils : utiliser les vhost et les déclarer dans votre `/etc/hosts`
@@ -54,26 +54,28 @@ services:
       - ./src:/var/www/src
       - ./html:/var/www/html
       - data:/var/www/data
-    links :
-      - mysql:db
-      - mongodb:mongo
-      - mailcatcher:mail
-      - postgres:pg
+    networks:          
+      - local_network  
+    depends_on :
+      - mysql
+      - mongodb
 ```
 #### exemple : service php-cli avec lancement du serveur embarqué : 
 ```
 services:
   php:
-    image: canals/php:7.4-cli
+    image: canals/php:8.1-cli
     ports:
       - "8800:8000"
     volumes:
      - ./:/var/php
     working_dir: /var/php
     command: php -S 0.0.0.0:8000 index.php
-    links :
-      - mysql:db
-      - mongo:mongo
+    networks:          
+      - local_network  
+    depends_on :
+      - mysql
+      - mongodb
 ```
 
 ### mysql + adminer
@@ -86,28 +88,34 @@ services:
   si les fichiers d'import/export sont trop volumineux pour être traités par adminer
 
 #### important :
-Ne pas oublier de lier le service mysql dans tous les services qui doivent accéder à la base
-mysql, par exemple dans les services php.
+Le service mysql est accessible dans tous les services connectés au même réseau avec 
+un hostname ayant pour valeur le nom du service.
+On peut ajouter un ou plusieurs hostname alternatifs avec la directive sous directive `aliases` de la directive `networks`
+
 
 #### exemple
 
 ```
   mysql:
     image: mariadb:latest
-#    image: mysql:5.6
     environment:
       - MYSQL_ROOT_PASSWORD=root
       - MYSQL_USER=user
       - MYSQL_PASSWORD=user
     ports:
       - "3603:3306"
+    networks:
+      aliases:
+        - db
       
   adminer:
      image: adminer
      ports:
        - "8080:8080"
-     links:
-       - mysql:db
+     depends_on:
+       - mysql
+  # Dans ce conteneur, le serveur mysql est accessible avec le hostname mysql et 
+  # le hostname db
 ```
 
 ### mongodb + mongo-express
@@ -123,13 +131,17 @@ mysql, par exemple dans les services php.
     image: mongo:latest
     ports:
         - 27017:27017
+    networks:
+      local_network:
+        aliases:
+          - mongo
 
   mongo-express:
      image: mongo-express:latest
      ports:
         - "8081:8081"
-     links:
-        - mongodb:mongo
+     depends_on:
+       - mongodb
 ```
 
 ### mailcatcher
@@ -149,6 +161,10 @@ mailcatcher:
   ports:
     - "1080:1080"
     - "1025:1025
+  networks: 
+    local_network:
+      aliases:
+        - mail.server
 ```
 
 #### usage
@@ -157,15 +173,16 @@ mailcatcher:
  web:
      image: canals/php
      ...
-     links :
-       - mysql:db
-       - mailcatcher:mail
+     networks:
+        - localnetwork
+     depends_on:
+       - mailcatcher
 ```
 
- il faut utiliser le serveur de mail nommé `mail` sur le port `1025`.
+ il faut utiliser le serveur de mail nommé `mail.server` sur le port `1025`.
 
  Par exemple, avec SwiftMailer :
 ```
- $mailer = new Swift_Mailer( new Swift_SmtpTransport('mail', 1025) );
+ $mailer = new Swift_Mailer( new Swift_SmtpTransport('mail.server', 1025) );
 ```
 
diff --git a/boilerplate/demo/docker-compose.yml b/boilerplate/demo/docker-compose.yml
index 3342e492b30f1f96183935ea439483e074955124..c3a0cc8360bf353b4add9be2a97a40157be1c962 100644
--- a/boilerplate/demo/docker-compose.yml
+++ b/boilerplate/demo/docker-compose.yml
@@ -6,7 +6,7 @@ networks:
 
 services:
   web:
-    image: canals/php:8.0
+    image: canals/php:latest
     environment:
       - VHOST_HOSTNAME=web.test.local
       - VHOST_DOCROOT=/var/www/web
@@ -19,16 +19,19 @@ services:
       - ./html:/var/www/html
       - data:/var/www/data
     working_dir: /var/www/src
-    links :
-      - mysql:db
+#    links :
+#      - mysql:db
 #      - postgres:pg
 #      - mongo:mongo
 #      - mail:mail
     networks:
       - local_network
+    depends_on:
+      - mysql
+      - mongo
 
   php:
-    image: canals/php:8.0-cli
+    image: canals/php:8.1-cli
     expose:
       - "8000"
     ports:
@@ -39,9 +42,12 @@ services:
     networks:
       - local_network
     command: php -S 0.0.0.0:8000 web/index-cli.php
-    links :
-      - mysql:db
-      - mongo:mongo
+    depends_on:
+      - mysql
+      - mongo
+#    links :
+#     - mysql:db
+#     - mongo:mongo
 #      - mail:mail
 #      - postgres:pg
 
@@ -50,7 +56,6 @@ services:
 # mysql + adminer / can be replaced by mariadb
 #############################
   mysql:
-    #image: mysql:5.6
     image: mariadb:latest
     environment:
       - MYSQL_ROOT_PASSWORD=root
@@ -59,14 +64,14 @@ services:
     ports:
       - "3603:3306"
     networks:
-      - local_network
+      local_network:
+        aliases:
+          - db
 
   adminer:
     image: adminer
     ports:
       - "8080:8080"
-    links:
-      - mysql:db
     networks:
       - local_network
 
@@ -96,32 +101,33 @@ services:
 ################################################
 # mongodb & mongo-express
 ###############################################
-  mongo:
+  mongodb:
     image: mongo:latest
     ports:
       - 27017:27017
     networks:
-      - local_network
+      local_network:
+        aliases:
+          - mongo
 
   mongo-express:
     image: mongo-express:latest
     ports:
       - "8081:8081"
-    links:
-      - mongo:mongo
+#    links:
+#      - mongo:mongo
     networks:
       - local_network
 
 ##############################################
 # mailcatcher : so useful !
 ##############################################
-# mail:
-#   image: schickling/mailcatcher
-#   container_name: mail_test
-#   ports:
-#     - "1080:1080"
-#   networks:
-#     - local_network
+  mail:
+    image: schickling/mailcatcher
+    ports:
+      - "1080:1080"
+    networks:
+      - local_network
 
 ########################################
 # shared storage : useful for, e.g. sharing
diff --git a/boilerplate/demo/src/composer.lock b/boilerplate/demo/src/composer.lock
index e94aa773afcc429f057771548c59401dd0903b93..2fe5e8a53439a649191f76d7cc6319cbb5debc2c 100644
--- a/boilerplate/demo/src/composer.lock
+++ b/boilerplate/demo/src/composer.lock
@@ -6,99 +6,30 @@
     ],
     "content-hash": "36a2b35c58a5b49561f22d67c89c7c85",
     "packages": [
-        {
-            "name": "composer/package-versions-deprecated",
-            "version": "1.11.99.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/package-versions-deprecated.git",
-                "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
-                "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.1.0 || ^2.0",
-                "php": "^7 || ^8"
-            },
-            "replace": {
-                "ocramius/package-versions": "1.11.99"
-            },
-            "require-dev": {
-                "composer/composer": "^1.9.3 || ^2.0@dev",
-                "ext-zip": "^1.13",
-                "phpunit/phpunit": "^6.5 || ^7"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "PackageVersions\\Installer",
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PackageVersions\\": "src/PackageVersions"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "support": {
-                "issues": "https://github.com/composer/package-versions-deprecated/issues",
-                "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.1"
-            },
-            "funding": [
-                {
-                    "url": "https://packagist.com",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/composer",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2020-11-11T10:22:58+00:00"
-        },
         {
             "name": "jean85/pretty-package-versions",
-            "version": "1.5.1",
+            "version": "2.0.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Jean85/pretty-package-versions.git",
-                "reference": "a917488320c20057da87f67d0d40543dd9427f7a"
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/a917488320c20057da87f67d0d40543dd9427f7a",
-                "reference": "a917488320c20057da87f67d0d40543dd9427f7a",
+                "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
                 "shasum": ""
             },
             "require": {
-                "composer/package-versions-deprecated": "^1.8.0",
-                "php": "^7.0|^8.0"
+                "composer-runtime-api": "^2.0.0",
+                "php": "^7.1|^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.0|^8.5|^9.2"
+                "friendsofphp/php-cs-fixer": "^2.17",
+                "jean85/composer-provided-replaced-stub-package": "^1.0",
+                "phpstan/phpstan": "^0.12.66",
+                "phpunit/phpunit": "^7.5|^8.5|^9.4",
+                "vimeo/psalm": "^4.3"
             },
             "type": "library",
             "extra": {
@@ -121,7 +52,7 @@
                     "email": "alessandro.lai85@gmail.com"
                 }
             ],
-            "description": "A wrapper for ocramius/package-versions to get pretty versions strings",
+            "description": "A library to get pretty versions strings of installed dependencies",
             "keywords": [
                 "composer",
                 "package",
@@ -130,49 +61,50 @@
             ],
             "support": {
                 "issues": "https://github.com/Jean85/pretty-package-versions/issues",
-                "source": "https://github.com/Jean85/pretty-package-versions/tree/1.5.1"
+                "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
             },
-            "time": "2020-09-14T08:43:34+00:00"
+            "time": "2021-10-08T21:21:46+00:00"
         },
         {
             "name": "mongodb/mongodb",
-            "version": "1.8.0",
+            "version": "1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/mongodb/mongo-php-library.git",
-                "reference": "953dbc19443aa9314c44b7217a16873347e6840d"
+                "reference": "e4a7594ac4b31635fa77455c4038a7013024ba28"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/953dbc19443aa9314c44b7217a16873347e6840d",
-                "reference": "953dbc19443aa9314c44b7217a16873347e6840d",
+                "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/e4a7594ac4b31635fa77455c4038a7013024ba28",
+                "reference": "e4a7594ac4b31635fa77455c4038a7013024ba28",
                 "shasum": ""
             },
             "require": {
                 "ext-hash": "*",
                 "ext-json": "*",
-                "ext-mongodb": "^1.8.1",
-                "jean85/pretty-package-versions": "^1.2",
-                "php": "^7.0 || ^8.0",
+                "ext-mongodb": "^1.13.0",
+                "jean85/pretty-package-versions": "^1.2 || ^2.0.1",
+                "php": "^7.2 || ^8.0",
                 "symfony/polyfill-php80": "^1.19"
             },
             "require-dev": {
-                "squizlabs/php_codesniffer": "^3.5, <3.5.5",
-                "symfony/phpunit-bridge": "5.x-dev"
+                "doctrine/coding-standard": "^9.0",
+                "squizlabs/php_codesniffer": "^3.6",
+                "symfony/phpunit-bridge": "^5.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8.x-dev"
+                    "dev-master": "1.12.x-dev"
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "MongoDB\\": "src/"
-                },
                 "files": [
                     "src/functions.php"
-                ]
+                ],
+                "psr-4": {
+                    "MongoDB\\": "src/"
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -198,9 +130,9 @@
             ],
             "support": {
                 "issues": "https://github.com/mongodb/mongo-php-library/issues",
-                "source": "https://github.com/mongodb/mongo-php-library/tree/1.8.0"
+                "source": "https://github.com/mongodb/mongo-php-library/tree/1.12.0"
             },
-            "time": "2020-11-25T12:26:02+00:00"
+            "time": "2022-03-23T20:18:39+00:00"
         },
         {
             "name": "swiftmailer/swiftmailer",
@@ -258,20 +190,21 @@
                 "issues": "https://github.com/swiftmailer/swiftmailer/issues",
                 "source": "https://github.com/swiftmailer/swiftmailer/tree/v5.4.12"
             },
+            "abandoned": "symfony/mailer",
             "time": "2018-07-31T09:26:32+00:00"
         },
         {
             "name": "symfony/polyfill-php80",
-            "version": "v1.20.0",
+            "version": "v1.26.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+                "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
-                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
+                "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
                 "shasum": ""
             },
             "require": {
@@ -280,7 +213,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-main": "1.20-dev"
+                    "dev-main": "1.26-dev"
                 },
                 "thanks": {
                     "name": "symfony/polyfill",
@@ -288,12 +221,12 @@
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
                 "files": [
                     "bootstrap.php"
                 ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
                 "classmap": [
                     "Resources/stubs"
                 ]
@@ -325,7 +258,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
             },
             "funding": [
                 {
@@ -341,7 +274,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-10-23T14:02:19+00:00"
+            "time": "2022-05-10T07:21:04+00:00"
         }
     ],
     "packages-dev": [],
@@ -352,5 +285,5 @@
     "prefer-lowest": false,
     "platform": [],
     "platform-dev": [],
-    "plugin-api-version": "2.0.0"
+    "plugin-api-version": "2.3.0"
 }
diff --git a/boilerplate/demo/src/sample.php b/boilerplate/demo/src/sample.php
index 9eec48d46496dab6e58629d91b2d181cb15cb937..a1f60329e09ee3a643d3f84dd217eb8b31ffbd91 100644
--- a/boilerplate/demo/src/sample.php
+++ b/boilerplate/demo/src/sample.php
@@ -7,4 +7,5 @@
  * @author: canals
  */
 
-$sample ='hungry heart';
\ No newline at end of file
+$sample ='hungry heart';
+return $sample;
\ No newline at end of file
diff --git a/boilerplate/demo/web/index.php b/boilerplate/demo/web/index.php
index 365327029127f02c9bb0d52a7c03040930a758bc..6dc7b552f53ebbc5f12be6acb26e166ccdcc5eb3 100644
--- a/boilerplate/demo/web/index.php
+++ b/boilerplate/demo/web/index.php
@@ -7,7 +7,7 @@
  * @author: canals
  */
 
-require_once __DIR__ . '/../src/sample.php';
+$sample = require_once __DIR__ . '/../src/sample.php';
 
 echo <<<EOT
 <!-- DOCTYPE html-->
diff --git a/boilerplate/demo/web/mail.php b/boilerplate/demo/web/mail.php
index 553e96dfccf7fe9eb140196cbe961592f066fb43..12b61ba2d5c77a6d4200c6659e25ed4202f90ed3 100644
--- a/boilerplate/demo/web/mail.php
+++ b/boilerplate/demo/web/mail.php
@@ -9,7 +9,7 @@
 
 require __DIR__ . '/../src/vendor/autoload.php';
 
-$mailer = new Swift_Mailer( new Swift_SmtpTransport('mail', 1025) );
+$mailer = new Swift_Mailer( new Swift_SmtpTransport('mail', 1025, '') );
 
 $message = (new Swift_Message('test subject'))
      ->setFrom( ['john.doe@mix.com'=>'john doe'])
diff --git a/boilerplate/sample.docker-compose.yml b/boilerplate/sample.docker-compose.yml
index e1ba096fb100ac50b95ba959fd911747b8608678..f41632a5b78b144d594c9701b4dd22921a279a6a 100644
--- a/boilerplate/sample.docker-compose.yml
+++ b/boilerplate/sample.docker-compose.yml
@@ -21,14 +21,12 @@ services:
     working_dir : /var/www/src
     networks:
       - local_network
-    links :
-      - mysql:db
-#      - mongo:mongo
-#      - mail:mail
-#      - postgres:pg
+    depends_on:
+      - mysql
+      - postgres
 
   php:
-    image: canals/php:8.0-cli
+    image: canals/php:8.1-cli
     expose:
       - "8000"
     ports:
@@ -49,7 +47,6 @@ services:
 # mysql/mariadb + adminer / can be replaced by mariadb
 #############################
   mysql:
-#    image: mysql:5.6
     image: mariadb:latest
     container_name: mysql.dev.local
     command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8_general_ci
@@ -59,7 +56,9 @@ services:
       - MYSQL_PASSWORD=secure
       - MYSQL_DATABASE=mydatab
     networks:
-      - local_network
+      local_network:
+        aliases:
+          - db
     ports:
       - "3603:3306"
     volumes :
@@ -71,9 +70,8 @@ services:
        - "8080:8080"
      networks:
        - local_network
-     links:
-       - mysql:db
-
+     depends_on:
+       - mysql
 
 
 
@@ -81,25 +79,29 @@ services:
 ##################################
 # postgres + adminer
 ###################################
-# postgres:
-#   image: postgres
-#   environment :
-#     - POSTGRES_PASSWORD = pgroot
-#     - POSTGRES_USER = pguser
-#   networks:
-#     - local_network
-#   ports:
-#     - "5432:5432"
+  postgres:
+    image: postgres
+    environment :
+      - POSTGRES_PASSWORD = pgroot
+      - POSTGRES_USER = pguser
+    networks:
+      local_network:
+        aliases:
+          - pg
+    ports:
+      - "5432:5432"
+
+  adminer-pg:
+    image: adminer
+    networks:
+      - local_network
+    ports:
+      - "8088:8080"
+    depends_on:
+      - postgres
+
+
 
-# adminer-pg:
-#   image: adminer
-#   networks:
-#     - local_network
-#   ports:
-#     - "8088:8080"
-#   links:
-#     - postgres:db
-#
 
 ################################################
 # mongodb & mongo-express
diff --git a/boilerplate/web.env b/boilerplate/web.env
index 4f5f56cccef5d295e95e9d845b278dfeaf2023ed..53b3cf8ac8bbabd3cf747c45653ae77a4c19be3a 100644
--- a/boilerplate/web.env
+++ b/boilerplate/web.env
@@ -1,6 +1,6 @@
 #
 # environment variables exported to the container
-# classical use cas : http proxys when docker runs behind
+# classical use case : http proxys when docker runs behind
 # a corporate proxy
 #