SQLSTATE[HY000] [2002] Connection refused with docker-compose on travis only for symfony phpunit test

Viewed 362

I have a docker compose setup for symfony that is working locally but when i run the same thing on Travis CI, I am getting SQLSTATE[HY000] [2002] Connection refused despite setting the host in my .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

docker-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:

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

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/

Travis error

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

This same error repeats for almost every test.

0 Answers
Related