Index: .env
===================================================================
--- .env	(revision 49356)
+++ .env	(working copy)
@@ -3,6 +3,10 @@
 #
 # All of these options can be overridden by setting them as environment variables before starting
 # the environment. You will need to restart your environment when changing any of these.
+#
+# Below, the following substitutions can be made:
+# - '{version}': any major.minor PHP version from 5.2 onwards.
+# - '{phpunit_version}': any major PHPUnit version starting with 4.
 ##
 
 # The site will be available at http://localhost:LOCAL_PORT
@@ -11,10 +15,30 @@
 # Where to run WordPress from. Valid options are 'src' and 'build'.
 LOCAL_DIR=src
 
-# The PHP version to use. Valid options are 'latest', and '{version}-fpm', where '{version}' is any
-# x.y PHP version from 5.2 onwards.
+# The PHP version to use. Valid options are 'latest', and '{version}-fpm'.
 LOCAL_PHP=latest
 
+##
+# The PHPUnit version to use when running tests.
+#
+# Support for new PHPUnit versions is not backported to past versions, so some old WordPress branches require an older
+# version to run tests.
+#
+# Valid versions are:
+# - 'latest' for the highest version of PHPUnit supported on the highest version of PHP supported.
+# - '{version}-fpm' for the highest version of PHPUnit supported on the specified version of PHP.
+# - '{phpunit_version}-php-{version}-fpm' for a specific version of PHPUnit on the specified version of PHP. This format
+# is only available for PHP versions 5.6 and higher.
+#
+# For the full list of available options, see https://hub.docker.com/r/wordpressdevelop/phpunit/tags.
+#
+# For full documentation on PHPUnit compatibility and WordPress versions, see
+# https://make.wordpress.org/core/handbook/references/phpunit-compatibility-and-wordpress-versions/.
+#
+# This defaults to the value assigned to the value of LOCAL_PHP.
+##
+LOCAL_PHPUNIT=${LOCAL_PHP}
+
 # Whether or not to enable XDebug.
 LOCAL_PHP_XDEBUG=false
 
Index: docker-compose.yml
===================================================================
--- docker-compose.yml	(revision 49356)
+++ docker-compose.yml	(working copy)
@@ -96,7 +96,7 @@
   # The PHPUnit container.
   ##
   phpunit:
-    image: wordpressdevelop/phpunit:${LOCAL_PHP-latest}
+    image: wordpressdevelop/phpunit:${LOCAL_PHPUNIT-latest}
 
     networks:
       - wpdevnet
Index: package-lock.json
===================================================================
--- package-lock.json	(revision 49356)
+++ package-lock.json	(working copy)
@@ -9135,9 +9135,9 @@
 			}
 		},
 		"dotenv": {
-			"version": "8.1.0",
-			"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz",
-			"integrity": "sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA==",
+			"version": "8.2.0",
+			"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
+			"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
 			"dev": true
 		},
 		"dotenv-expand": {
@@ -25201,6 +25201,12 @@
 				"tar-stream": "^2.0.0"
 			},
 			"dependencies": {
+				"base64-js": {
+					"version": "1.3.1",
+					"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+					"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+					"dev": true
+				},
 				"bl": {
 					"version": "4.0.3",
 					"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
@@ -25213,13 +25219,13 @@
 					}
 				},
 				"buffer": {
-					"version": "5.6.0",
-					"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
-					"integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
+					"version": "5.7.0",
+					"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.0.tgz",
+					"integrity": "sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg==",
 					"dev": true,
 					"requires": {
-						"base64-js": "^1.0.2",
-						"ieee754": "^1.1.4"
+						"base64-js": "^1.3.1",
+						"ieee754": "^1.1.13"
 					}
 				},
 				"readable-stream": {
Index: package.json
===================================================================
--- package.json	(revision 49356)
+++ package.json	(working copy)
@@ -35,7 +35,7 @@
 		"check-node-version": "4.0.1",
 		"copy-webpack-plugin": "^5.1.1",
 		"cssnano": "4.1.10",
-		"dotenv": "8.1.0",
+		"dotenv": "8.2.0",
 		"dotenv-expand": "5.1.0",
 		"grunt": "~1.1.0",
 		"grunt-banner": "^0.6.0",
Index: tools/local-env/scripts/docker.js
===================================================================
--- tools/local-env/scripts/docker.js	(revision 49356)
+++ tools/local-env/scripts/docker.js	(working copy)
@@ -1,6 +1,8 @@
-const dotenv = require( 'dotenv' );
+const dotenv       = require( 'dotenv' );
+const dotenvExpand = require( 'dotenv-expand' );
 const { execSync } = require( 'child_process' );
-dotenv.config();
+
+dotenvExpand( dotenv.config() );
 
 // Execute any docker-compose command passed to this script.
 execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
Index: tools/local-env/scripts/install.js
===================================================================
--- tools/local-env/scripts/install.js	(revision 49356)
+++ tools/local-env/scripts/install.js	(working copy)
@@ -1,9 +1,10 @@
-const dotenv = require( 'dotenv' );
+const dotenv       = require( 'dotenv' );
+const dotenvExpand = require( 'dotenv-expand' );
 const wait_on = require( 'wait-on' );
 const { execSync } = require( 'child_process' );
 const { renameSync, readFileSync, writeFileSync } = require( 'fs' );
 
-dotenv.config();
+dotenvExpand( dotenv.config() );
 
 // Create wp-config.php.
 wp_cli( 'config create --dbname=wordpress_develop --dbuser=root --dbpass=password --dbhost=mysql --path=/var/www/src --force' );
Index: tools/local-env/scripts/start.js
===================================================================
--- tools/local-env/scripts/start.js	(revision 49356)
+++ tools/local-env/scripts/start.js	(working copy)
@@ -1,7 +1,8 @@
-const dotenv = require( 'dotenv' );
+const dotenv       = require( 'dotenv' );
+const dotenvExpand = require( 'dotenv-expand' );
 const { execSync } = require( 'child_process' );
 
-dotenv.config();
+dotenvExpand( dotenv.config() );
 
 // Start the local-env containers.
 execSync( 'docker-compose up -d wordpress-develop', { stdio: 'inherit' } );
