dockerbuild设:致命错误:类'Memcached'找不到

我正在使用symfony框架进行dockerizing项目。 发生以下错误。

Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them. Package operations: 28 installs, 0 updates, 0 removals - Installing twig/twig (v1.12.1): Cloning v1.12.1 Failed to download twig/twig from source: Your configuration does not allow connections to git://github.com/fabpot/Twig.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing twig/twig (v1.12.1): Downloading (100%) - Installing doctrine/common (2.3.0): Cloning 2.3.0 - Installing symfony/symfony (v2.1.7): Cloning v2.1.7 Failed to download symfony/symfony from source: Your configuration does not allow connections to git://github.com/symfony/symfony.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing symfony/symfony (v2.1.7): Downloading (100%) - Installing jdorn/sql-formatter (v1.2.0): Cloning v1.2.0 Failed to download jdorn/sql-formatter from source: Your configuration does not allow connections to git://github.com/jdorn/sql-formatter.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing jdorn/sql-formatter (v1.2.0): Downloading (100%) - Installing doctrine/dbal (2.3.2): Cloning 2.3.2 - Installing doctrine/doctrine-bundle (v1.1.0): Cloning v1.1.0 Failed to download doctrine/doctrine-bundle from source: Your configuration does not allow connections to git://github.com/doctrine/DoctrineBundle.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing doctrine/doctrine-bundle (v1.1.0): Downloading (100%) - Installing doctrine/orm (2.3.2): Cloning 2.3.2 Failed to download doctrine/orm from source: Your configuration does not allow connections to git://github.com/doctrine/doctrine2.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing doctrine/orm (2.3.2): Downloading (100%) - Installing friendsofsymfony/jsrouting-bundle (1.1.2): Cloning 1.1.2 - Installing jms/cg (1.0.0): Cloning 1.0.0 Failed to download jms/cg from source: Your configuration does not allow connections to git://github.com/schmittjoh/cg-library.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing jms/cg (1.0.0): Downloading (100%) - Installing jms/metadata (1.1.1): Cloning 1.1.1 - Installing jms/aop-bundle (1.0.0): Cloning 1.0.0 - Installing jms/di-extra-bundle (1.1.1): Cloning 1.1.1 - Installing jms/security-extra-bundle (1.2.0): Cloning 1.2.0 - Installing kriswallsmith/assetic (dev-master 5591252): Cloning 5591252faa Failed to download kriswallsmith/assetic from source: Your configuration does not allow connections to http://github.com/kriswallsmith/assetic.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing kriswallsmith/assetic (dev-master 5591252): Downloading (100%) - Installing phpoffice/phpexcel (1.7.9): Cloning 7a7634fba6 - Installing irongit/symfony2-stream-response (dev-master 3e5082e): Cloning 3e5082e7be - Installing liuggio/excelbundle (v1.0.5): Cloning 9cf3e2ec21 - Installing kriswallsmith/buzz (v0.10): Cloning 759432d663 - Installing sensio/buzz-bundle (dev-master 929c883): Cloning 929c883f8d - Installing sensio/distribution-bundle (v2.1.7): Cloning v2.1.7 - Installing sensio/framework-extra-bundle (v2.1.7): Cloning v2.1.7 - Installing sensio/generator-bundle (v2.1.7): Cloning v2.1.7 - Installing symfony/assetic-bundle (v2.1.0): Cloning v2.1.0-RC2 - Installing monolog/monolog (1.2.1): Cloning 1.2.1 - Installing symfony/monolog-bundle (v2.1.7): Cloning v2.1.7 - Installing swiftmailer/swiftmailer (v4.2.2): Cloning v4.2.2 Failed to download swiftmailer/swiftmailer from source: Your configuration does not allow connections to git://github.com/swiftmailer/swiftmailer.git. See https://getcomposer.org/doc/06-config.md#secure-http for details. Now trying to download from dist - Installing swiftmailer/swiftmailer (v4.2.2): Downloading (100%) - Installing symfony/swiftmailer-bundle (v2.1.7): Cloning v2.1.7 - Installing twig/extensions (dev-master 5c2d515): Cloning 5c2d515d46 kriswallsmith/assetic suggests installing leafo/lessphp (Assetic provides the integration with the lessphp LESS compiler) kriswallsmith/assetic suggests installing leafo/scssphp (Assetic provides the integration with the scssphp SCSS compiler) kriswallsmith/assetic suggests installing leafo/scssphp-compass (Assetic provides the integration with the SCSS compass plugin) kriswallsmith/assetic suggests installing ptachoire/cssembed (Assetic provides the integration with phpcssembed to embed data uris) monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required)) monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server) monolog/monolog suggests installing mlehner/gelf-php (Allow sending log messages to a GrayLog2 server) Generating autoload files > Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap > Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets Fatal error: Class 'Memcached' not found in /var/www/html/gallery_core/app/cache/dev/appDevDebugProjectContainer.php on line 497 Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets handling the post-install-cmd event terminated with an exception [RuntimeException] An error occurred when executing the "'assets:install '\''web'\'''" command. 

我search了一下,发现这可能是memcached没有正确安装。 但在这里,我使用docker我已经build立了一个memcached服务。

Memcached dockerfile:

 FROM memcached:1.4-alpine # Port to expose (default: 11211) EXPOSE 11211 # Default Memcached run command arguments CMD ["-m", "128"] # Set the user to run Memcached daemon USER daemon # Set the entrypoint to memcached binary ENTRYPOINT memcached 

PHP的Dockerfile

 FROM php:5.6-apache RUN apt-get update && apt-get install -y \ git \ unzip # Install Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN composer --version ENV TZ=America/Los_Angeles ENV SYMFONY_ENV='dev' # RUN php composer.phar install --prefer-source ENV docroot='/var/www/html' ENV contentroot='/var/content' RUN mkdir $docroot/gallery_core copy . $docroot/gallery_core/ copy php.ini /usr/local/etc/php RUN cd $docroot/gallery_core WORKDIR $docroot/gallery_core RUN composer install --prefer-source RUN cp $docroot/gallery_core/web/app_dev.php $docroot/gallery_core/web/app.php # install symfony symlinks RUN php $docroot/gallery_core/app/console assets:install $docroot/gallery_core/web --symlink # install a symlink for the assets: RUN ln -s $docroot/gallery_core/web $docroot/gallery_core/web/gcassets 

Composer.json

 { "name": "symfony/framework-standard-edition", "description": "The \"Symfony Standard Edition\" distribution", "autoload": { "psr-0": { "": "src/" } }, "require": { "php": ">=5.3.3", "symfony/symfony": "2.1.*", "doctrine/orm": ">=2.2.3,<2.4-dev", "doctrine/doctrine-bundle": "1.1.*", "twig/extensions": "1.0.*@dev", "symfony/assetic-bundle": "2.1.*", "symfony/swiftmailer-bundle": "2.1.*", "symfony/monolog-bundle": "2.1.*", "sensio/distribution-bundle": "2.1.*", "sensio/framework-extra-bundle": "2.1.*", "sensio/generator-bundle": "2.1.*", "jms/security-extra-bundle": "1.2.*", "jms/di-extra-bundle": "1.1.*", "kriswallsmith/assetic": "1.1.*@dev", "friendsofsymfony/jsrouting-bundle": "1.1.*", "irongit/symfony2-stream-response": "dev-master", "liuggio/excelbundle": ">=1.0.4", "sensio/buzz-bundle": "dev-master" }, "scripts": { "post-install-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ], "post-update-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ] }, "extra": { "symfony-app-dir": "app", "symfony-web-dir": "web" } } 

我的问题是如何使运行PHP脚本的服务能够“检测”memcached服务的方式,memcached是直接安装在主机上,并透明的PHP脚本服务?

为docker(php-5.6)安装memcached更改

 RUN apt-get update && apt-get install -y \ git \ unzip 

 RUN apt-get update \ && apt-get install -y git unzip zlib1g-dev libmemcached11 libmemcached-dev \ && yes '' | pecl install memcached-2.2.0 \ && docker-php-ext-enable memcached \ && yes '' | pecl install memcache \ && docker-php-ext-enable memcache 

并重buildPHP容器,这将安装memcache和memcached扩展为PHP