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
снова после запуска контейнера, и я бы хотел, чтобы мой контейнер был как можно более готов.
Поскольку я не нашел много ссылок на подобные проблемы, возможно, в моем приложении что-то не так, и я подозреваю, что отвечу на свой вопрос. Я надеялся, что, описав это, я пойму это. Увы, нет. Подсказки приветствуются 🙂
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
Других решений пока нет …