EntityManager-> flush Соединение отклонено HY000 2002 с докером - PullRequest
0 голосов
/ 21 сентября 2019

Когда я использую Symfony, доктрину с xampp, проблем нет.

Но, когда я использую Symfony, доктрину с докером, ниже возникает проблема.

An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
Doctrine\DBAL\Exception\
ConnectionException
in vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php (line 93)
in vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php->convertException (line 169)
in vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php::wrapException (line 155)
in vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php::driverException (line 28)
in vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php->connect (line 356)
in vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php->connect (line 1236)
in vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php->beginTransaction (line 376)
in vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php->commit (line 359)

EntityManager->flush() in src/Controller/ArticleController.php (line 36)

$article->setTitle('Article One');            
$article->setBody('This is the body for article one');            
$entityManager->persist($article);            

$entityManager->flush();            

return new Response('Saves an article with the id of '.$article->getId());        

MyПроект Symfony в XAMPP и в Docker точно такой же.Вот почему я думаю, что что-то не так с моим DockerFile или с docker-compose.yml, или с любой доктриной, или с установочными файлами Symfony

Эта проблема возникает только в строке:

EntityManager->flush()

Нет проблем с:

php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate

Вот мои настройки:

doctrine.yaml

doctrine:
    orm:
        auto_generate_proxy_classes: false
        metadata_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        query_cache_driver:
            type: service
            id: doctrine.system_cache_provider
        result_cache_driver:
            type: service
            id: doctrine.result_cache_provider
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '8.0.15'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'

services:
    doctrine.result_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.result_cache_pool'
    doctrine.system_cache_provider:
        class: Symfony\Component\Cache\DoctrineProvider
        public: false
        arguments:
            - '@doctrine.system_cache_pool'

framework:
    cache:
        pools:
            doctrine.result_cache_pool:
                adapter: cache.app
            doctrine.system_cache_pool:
                adapter: cache.system

DockerFile

FROM php:7.3.0-apache

RUN curl -sS http://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && apt-get update && apt-get install -y git libzip-dev  unzip \
    && docker-php-ext-install zip \
    && docker-php-ext-install pdo pdo_mysql zip \
    && a2enmod rewrite headers

COPY . /var/www/html

WORKDIR /var/www/html/app

RUN composer install

docker-compose.yml

version: '3.4'

volumes:
  cache:
  log:

services:
  app:
    ports:
      - 80:80
    environment:
      - APACHE_DOCUMENT_ROOT=/var/www/html/app/public
    build:
      context: .
    volumes:
      - .:/var/www/html
      - ./config/vhost.conf:/etc/apache2/sites-available/000-default.conf
      - cache:/var/www/html/app/var/cache
      - log:/var/www/html/app/var/log

Хотя, возможно, это могло решить мою проблему, я попытался изменить make php.ini в образе docker, чтобы сделать это: Драйвер PHP docker pdo_mysql не найден

Но, когда я перезагружаю образ докера:

docker-compose down
docker-compose up -d

мой php.ini исчез из образа.

Я ожидал, что flush () должен быть успешным, как в xampp Может кто-нибудь помочь мне, пожалуйста?

...