TL;DR:当安装后脚本看不到 MySQL 服务器时,composer 安装失败
我正在为 Symfony 应用程序构建一个 docker 容器,在构建过程中我做了这样的事情
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
关于php - 无法看到 mysql 数据库时 Composer 安装失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503328/