Композитор установки не удается, когда не удается увидеть базу данных MySQL

TL; DR: установка композитора завершается неудачно, когда послеустановочные сценарии не видят сервер MySQL

Я создаю докер-контейнер для приложения Symfony, и во время сборки я делаю что-то вроде этого

RUN export SYMFONY_ENV=prod && \
composer install --prefer-dist --optimize-autoloader

Ближе к концу установки это терпит неудачу с этим

Generating optimized autoload files[Doctrine\DBAL\Exception\DriverException]
An exception occured in driver: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

[PDOException]
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception

[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.

Теперь я мог бы использовать --no-scripts но тогда, вероятно, мне нужно бежать composer install снова после запуска контейнера, и я бы хотел, чтобы мой контейнер был как можно более готов.

Поскольку я не нашел много ссылок на подобные проблемы, возможно, в моем приложении что-то не так, и я подозреваю, что отвечу на свой вопрос. Я надеялся, что, описав это, я пойму это. Увы, нет. Подсказки приветствуются 🙂

7

Решение

Doctrine представила некоторый код, который пытался автоматически обнаруживать вещи в базе данных.

Обходной путь — просто сообщить Doctrine версию целевого сервера, например

doctrine:
dbal:
default_connection: default
connections:
default:
dbname:   Symfony2
user:         root
password: null
host:         localhost
driver:       pdo_mysql
server_version: 5.6

Увидеть https://github.com/doctrine/DoctrineBundle/issues/351#issuecomment-75456547

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]