docker - SQLSTATE [HY000] [2002] 在 travis 上使用 docker-compose 拒绝连接仅用于 symfony phpunit 测试
问题描述
我有一个在本地工作的 symfony 的 docker compose 设置,但是当我在 Travis CI 上运行相同的东西时,SQLSTATE[HY000] [2002] Connection refused
尽管将主机设置在我的.env
to 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
码头工人-compose.yml
version: '3'
services:
web:
image: nginx:alpine
restart: always
tty: true
depends_on:
- php
ports:
- "80:80"
- "443:443"
volumes:
- ./src:/usr/src/app
- ./docker/nginx/conf.d/:/etc/nginx/conf.d/
php:
build:
dockerfile: ./docker/php/Dockerfile
context: ./
working_dir: /usr/src/app
restart: always
tty: true
depends_on:
- mysql
volumes:
- ./src:/usr/src/app
- ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
mysql:
image: mysql:8
restart: always
tty: true
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app
MYSQL_USER: admin
MYSQL_PASSWORD: password
volumes:
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
- mysqldata:/var/lib/mysql
volumes:
mysqldata:
码头工人/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
language: generic
sudo: required
services:
- docker
before_install:
- docker-compose up -d
script:
- docker-compose exec php composer install && docker-compose exec php vendor/bin/phpunit tests/
特拉维斯错误
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
几乎每次测试都会重复同样的错误。
解决方案
推荐阅读
- ckeditor - CKEditor 在保存时正在更改我的 SRC 或 Href
- string - sqlite instr 函数在某些情况下不起作用
- java - 如何在 onActivityResult 之后修复 JNI 代码中的 Android 崩溃?
- opencv - 如果我使用裁剪对象或全帧来训练级联分类器,有什么区别吗?
- java - 检索 Firebase 对象空指针异常
- c# - 如何在 VS 中正确处理引用
- java - Netty 的 FixedChannelPoolMap 不能维护旧频道?
- c# - 过滤绑定列表
- python - 如何限制没有终端或多处理库的python脚本使用的CPU数量?
- laravel - “试图获取非对象的属性‘标题’”Middleware\VerifyCsrfToken.php:180