首页 > 解决方案 > SQLSTATE [HY000] [2002] 在 travis 上使用 docker-compose 拒绝连接仅用于 symfony phpunit 测试

问题描述

我有一个在本地工作的 symfony 的 docker compose 设置,但是当我在 Travis CI 上运行相同的东西时,SQLSTATE[HY000] [2002] Connection refused尽管将主机设置在我的.envto 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

几乎每次测试都会重复同样的错误。

标签: dockersymfonydocker-composephpunittravis-ci

解决方案


推荐阅读