如何通过Composer为Dockerfile中的Symfony项目安装依赖项?

时间:2016-06-17 10:13:14

标签: php symfony docker composer-php

我遇到了与制作包含Symfony基础应用程序的Docker容器映像相关的问题。我可以毫无问题地安装php扩展(mcrypt,pdo_mysql等),但是我无法通过Composer安装依赖项。

所以...我有,我有与缓存和形成文件autoload.php相关的问题。我无法理解为什么,但它尝试连接数据库。我认为,因为我得到以下信息:

    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:

        [Doctrine\DBAL\Exception\ConnectionException]
        An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory


        [Doctrine\DBAL\Driver\PDOException]
        SQLSTATE[HY000] [2002] No such file or directory


        [PDOException]
        SQLSTATE[HY000] [2002] No such file or directory

我已尝试按命令composer install --no-scripts --no-autoloader安装,但已成功完成。但是我没有文件autoload.php就无法安装资产。

是否可以使用基于Symfony的项目依赖项和资产安装到Docker容器映像?谢谢!

1 个答案:

答案 0 :(得分:0)

AppKernel中的一个捆绑包在编译内核期间需要数据库连接(预热缓存)。您需要通过当时禁用它们来调试哪个捆绑包执行此操作。

如果你禁用所有这些(Symfony除外),建设容器可能就好了。

所以问题基本上在于post-install-cmd的这两行,对于我在Platform.sh上的项目,删除这些行允许我构建容器:

"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",