Мои тесты laravel отлично работают на моей машине, но при запуске на gitlab-runner через докер я вижу это во всех моих тестах:
...
Caused by
PDOException: SQLSTATE[HY000] [2002] No such file or directory
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:46
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:24
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:182
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:916
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:941
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:399
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:325
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Connection.php:333
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:99
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:48
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:73
/builds/project-0/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php:46
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
/builds/project-0/vendor/laravel/framework/src/Illuminate/Container/Container.php:572
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Command.php:183
/builds/project-0/vendor/symfony/console/Command/Command.php:255
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Command.php:170
/builds/project-0/vendor/symfony/console/Application.php:886
/builds/project-0/vendor/symfony/console/Application.php:262
/builds/project-0/vendor/symfony/console/Application.php:145
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Application.php:89
/builds/project-0/vendor/laravel/framework/src/Illuminate/Console/Application.php:188
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:250
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php:136
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/PendingCommand.php:218
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php:55
/builds/project-0/tests/RefreshAndSeedDatabase.php:61
/builds/project-0/tests/RefreshAndSeedDatabase.php:20
/builds/project-0/tests/TestCase.php:21
/builds/project-0/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:71
...
Вот мой .env.testing
:
...
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret
...
и мой .gitlab-ci.yml
:
image: composer
stages:
- setup
- test
- deploy
phpunit:
stage: test
image: epcallan/php7-testing-phpunit:7.2-phpunit6
services:
- mysql:5.7
variables:
MYSQL_DATABASE: homestead
MYSQL_ROOT_PASSWORD: secret
before_script:
- apt-get install -y libpng-dev libfreetype6-dev libjpeg62-turbo-dev
- docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
- docker-php-ext-install gd
script:
- cp .env.testing .env
- composer install
- php artisan key:generate
- php artisan passport:key
- php vendor/bin/phpunit --coverage-text --colors=never --coverage-html=public/tests/coverage
Я пытался изменить DB_HOST
на 127.0.0.1
, как предложено здесь , но это не помогло.
Решение, которое работало над моими другими проектами laravel, - установить DB_HOST
на mysql
, что обычно работает, но на этот раз не работает. Я не уверен почему.