Docker+PHPUnitを使ってみました。下記を参考にしています。なお、こちらではPHP 7.0 + PHPUnit 6.5 での書き方を紹介しています。PHPUnit 7.0 を使う場合は PHP 7.1以上が必要なようです。
CakePHP3でのテストを調べていたのですが、その前にDocker+PHPUnitかな、と思って調べました。CakePHP3だと下記があるようです。
目次
用意するファイル その1
PHPUnitの設定ファイル phpunit.xml
<phpunit
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.5/phpunit.xsd"
        backupGlobals="true"
        backupStaticAttributes="false"
        bootstrap="tests/bootstrap.php"
        cacheTokens="false"
        colors="false"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        forceCoversAnnotation="false"
        mapTestClassNameToCoveredClassName="false"
        printerClass="PHPUnit\TextUI\ResultPrinter"
        processIsolation="false"
        stopOnError="false"
        stopOnFailure="false"
        stopOnIncomplete="false"
        stopOnSkipped="false"
        stopOnRisky="false"
        testSuiteLoaderClass="PHPUnit\Runner\StandardTestSuiteLoader"
        timeoutForSmallTests="1"
        timeoutForMediumTests="10"
        timeoutForLargeTests="60"
        verbose="false">
        <testsuites>
          <testsuite name="Sample Test Suite">
            <file>./sampleTest.php</file>
          </testsuite>
        </testsuites>
</phpunit>
テスト起動用 tests/bootstrap.php
<?php require_once __DIR__ . '/../vendor/autoload.php';
composerでPHPUnitをインストールするので、composer.json
composer.json 
{
    "name": "phpunit",
    "description": "PHPUnit",
    "require": {
        "phpunit/phpunit": "6.5.*"
    }
}
用意するファイル その2
テスト対象のSample.php
<?php
class Sample
{
    public function hello($v) 
    {
        return 'Hello ' . $v;
    }
}
Sampleクラスをテストする sampleTest.php
<?php
require 'Sample.php';
use PHPUnit\Framework\TestCase;
class sampleTest extends TestCase
{
    private $sample;
    public function setUp()
    {
        $this->sample = new Sample();
    }
    public function tearDown()
    {
    }
    public function testサンプル()
    {
        $this->assertTrue(true, "sample test comment");
    }
    /**
     *  @dataProvider exampleSample
     */
    public function test値1にHelloがつくこと($value1, $expected)
    {
        $this->assertEquals($expected, $this->sample->hello($value1));
    }
    public function exampleSample()
    {
        return [
            [ 'PHP', 'Hello PHP' ],
            [ 'Python', 'Hello Python' ],
            [ 'Java', 'Hello Java' ],
        ];
    }
}
インストール
Dockerのcomposerイメージを使います。
$ docker run -u $UID:$GROUPS --rm -it -v $PWD:/app -w /app composer install
実行
vendor/bin/phpunitがインストールされているはずなので、これをphp:7.0-apacheのイメージを使って実行します。最初は、sampleTest.phpにassertTrue()へfalseを渡しているテストがあるので必ず失敗します。sedコマンドでfalseをtrueとなおして実行するとテストがすべて成功します。最後のsedは元にもどしています。
$ docker run -u $UID:$GROUPS  --rm -it -p 80:80 \
   -v $(pwd):/var/www/html \
   --name php70-apache php:7.0-apache \
     /var/www/html/vendor/bin/phpunit -c phpunit.xml
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.
F...                                                                4 / 4 (100%)
Time: 37 ms, Memory: 4.00MB
There was 1 failure:
1) sampleTest::testサンプル
sample test comment
Failed asserting that false is true.
/var/www/html/sampleTest.php:20
FAILURES!
Tests: 4, Assertions: 4, Failures: 1.
$ sed -i 's/false/true/' sampleTest.php 
$ docker run -u $UID:$GROUPS  --rm -it -p 80:80 \
   -v $(pwd):/var/www/html \
   --name php70-apache php:7.0-apache \
     /var/www/html/vendor/bin/phpunit -c phpunit.xml
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.
....                                                                4 / 4 (100%)
Time: 40 ms, Memory: 4.00MB
OK (4 tests, 4 assertions)
$ sed -i 's/true/false/' sampleTest.php