SQLSTATE[HY000][2002]仅针对symfony phpunit测试拒绝与travis上的docker compose连接

SQLSTATE[HY000][2002]仅针对symfony phpunit测试拒绝与travis上的docker compose连接,docker,symfony,docker-compose,phpunit,travis-ci,Docker,Symfony,Docker Compose,Phpunit,Travis Ci,我有一个symfony的docker compose设置,它在本地工作,但是当我在Travis CI上运行相同的东西时,我得到了SQLSTATE[HY000][2002]连接被拒绝,尽管在my.env中将主机设置为mysql .env.test # define your env variables for the test env here KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' SYMFONY_DEPRECATIONS_HEL

我有一个symfony的docker compose设置,它在本地工作,但是当我在Travis CI上运行相同的东西时,我得到了
SQLSTATE[HY000][2002]连接被拒绝
,尽管在my
.env
中将主机设置为
mysql

.env.test

# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
DATABASE_URL=mysql://admin:password@mysql:3306/app?serverVersion=5.7
docker compose.yml

版本:“3”
服务:
网状物:
图片:nginx:alpine
重新启动:始终
tty:是的
取决于:
-php
端口:
- "80:80"
- "443:443"
卷数:
-./src:/usr/src/app
-./docker/nginx/conf.d/:/etc/nginx/conf.d/
php:
建造:
dockerfile:./docker/php/dockerfile
上下文:/
工作目录:/usr/src/app
重新启动:始终
tty:是的
取决于:
-mysql
卷数:
-./src:/usr/src/app
-./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
mysql:
图片:mysql:8
重新启动:始终
tty:是的
环境:
MYSQL\u ROOT\u密码:ROOT
MYSQL_数据库:应用程序
MYSQL\u用户:admin
MYSQL\u密码:密码
卷数:
-./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
-./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
-mysqldata:/var/lib/mysql
卷数:
mysqldata:
docker/php/Dockerfile

FROM php:7.4-fpm
RUN docker-php-ext-install pdo_mysql
RUN pecl install apcu
RUN pecl install mailparse
RUN apt-get update && \
apt-get install -y \
libzip-dev
RUN docker-php-ext-install zip
RUN docker-php-ext-enable apcu
RUN docker-php-ext-enable mailparse
RUN apt-get update
RUN apt-get install unzip
RUN apt-get -y --no-install-recommends install git \
    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
.travis.ci

语言:通用
sudo:必选
服务:
-码头工人
安装前:
-docker compose up-d
脚本:
-docker compose exec php composer安装和docker compose exec php供应商/bin/phpunit测试/
特拉维斯错误

PHPUnit 9.2.3 by Sebastian Bergmann and contributors.
EEEEEEEEEEEEEEEEFEFEEEEEEE                                        26 / 26 (100%)
Time: 00:01.095, Memory: 46.50 MB
There were 24 errors:

1) App\Tests\CompanyTemplateApiTest::testCreateCompanyTemplate

Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused

/usr/src/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:93
/usr/src/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:169
/usr/src/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:157
/usr/src/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php:28
/usr/src/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:362
/usr/src/app/vendor/liip/test-fixtures-bundle/src/Services/DatabaseTools/ORMDatabaseTool.php:74
/usr/src/app/vendor/liip/test-fixtures-bundle/src/Services/DatabaseTools/ORMDatabaseTool.php:102
/usr/src/app/vendor/liip/test-fixtures-bundle/src/Test/FixturesTrait.php:89
/usr/src/app/tests/Controller/CompanyTemplateApiTest.php:37
/usr/src/app/tests/Traits/LoginTrait.php:11
/usr/src/app/tests/Controller/CompanyTemplateApiTest.php:43

几乎每个测试都会重复此错误。

是否有.env.test?.env.test是发布的第一个文件是否确定travis ci使用环境变量APP_env=test运行?是。我算是解决了这个问题。Mysql在测试开始之前还没有完全设置好。我需要使用等待脚本。