PHP的MySQL的docker例外SSL

我试图转移我们目前的网站,在docker集装箱使用symfony2。 制作部署脚本的开发人员已经离开公司,而我从来没有用PHP开发过。

当我build立我的形象,我运行相同的命令,因为他们使用部署。

php5 -d memory_limit=-1 composer.phar self-update && php5 -d memory_limit=-1 composer.phar install --prefer-dist --no-interaction 

但是当它在每一次部署中都起作用时,它就会使build筑物失效。

  • 我检查了我的docker图像上网。 它呢。

  • 我从我们的生产服务中复制了configuration文件和ssl。

  • 安装的包装包括:nodejs php5-cli curl php5-curl php5-mcrypt php5-intl php5-gd mcrypt npm php5-gd php5-common php5-mysql

  • 我使用了一个从php-docker的工具来安装pdo_mysql:docker-php-ext-install pdo pdo_mysql

build设时的错误。

 PHP Warning: PDO::__construct(): Cannot connect to MySQL by using SSL in /app/jolicone/app/cache/dev/appDevDebugProjectContainer.php on line 3863 PHP Warning: PDO::__construct(): [2002] (trying to connect via tcp://cleardb.com:port-cleardb) in /app/jolicone/app/cache/dev/appDevDebugProjectContainer.php on line 3863 [PDOException] SQLSTATE[HY000] [2002] Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception [RuntimeException] An error occurred when executing the "'cache:clear --no-warmup'" command. install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]... The command '/bin/sh -c cd /app/jolicone && php5 -d memory_limit=-1 composer.phar self-update && php5 -d memory_limit=-1 composer.phar install --prefer-dist --no-interaction' returned a non-zero code: 1 

有人有一个想法可能会发生什么? 我试着安装另一个软件包php5-mysqlnd,但是这也不起作用。

如果你想看看DockerFile

 FROM php:5.6-apache RUN apt-get update && apt-get upgrade -y && apt-get install -y apt-utils nodejs php5-cli curl php5-curl php5-mcrypt php5-intl php5-gd mcrypt npm php5-gd php5-common php5-mysqlnd RUN docker-php-ext-install pdo pdo_mysql # Linking nodejs binary to node alias RUN ln -s /usr/bin/nodejs /usr/sbin/node # Telling php about mcrypt extension RUN sed -i '/memory_limit/c\memory_limit = -1' /etc/php5/cli/php.ini RUN php5enmod gd mcrypt mysql pdo_mysql COPY apache2/php.ini /usr/local/etc/php/ # Local Repository RUN mkdir /app/ COPY jolicone/ /app/jolicone ############# Installing Composer ################# RUN cd /app/jolicone/ && php5 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" RUN cd /app\/jolicone && php5 composer-setup.php RUN cd /app/jolicone && php5 -r "unlink('composer-setup.php');" # Copy Apache2 Configuration COPY apache2/sites-enabled /etc/apache2/sites-enabled/ COPY apache2/file.pem apache2/file.crt apache2/file.key /etc/apache2/ COPY apache2/ssl /etc/apache2/ssl RUN a2enmod rewrite headers && service apache2 restart #Copy composer.json RUN rm -f /app/jolicone/composer.json COPY app/composer.json /app/jolicone/ # Copy config.yml RUN rm -f /app/jolicone/app/config/config.yml COPY app/config.yml /app/jolicone/app/config/config.yml # Copy parameters.yml RUN rm -f /app/jolicone/app/config/parameters.yml COPY app/parameters.yml /app/jolicone/app/config/parameters.yml ## mise a jour du composer.phar -> OK RUN cd /app/jolicone && php5 -d memory_limit=-1 composer.phar self-update && php5 -d memory_limit=-1 composer.phar install --prefer-dist --no-interaction 

所以我添加了ca-certificates包。 现在构build是可以的。

但是当我运行我的图像,并尝试连接到网站,我得到了同样的错误。

 vmtest:~/Docker$ cat log/* - - [21/Jun/2016:10:29:00 +0000] "GET / HTTP/1.1" 503 261 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:47.0) Gecko/20100101 Firefox/47.0" [Tue Jun 21 10:29:04.011586 2016] [:error] [pid 6] [client] PHP Warning: PDO::__construct(): Cannot connect to MySQL by using SSL in /path/file.php on line 1691 [Tue Jun 21 10:29:04.011648 2016] [:error] [pid 6] [client] PHP Warning: PDO::__construct(): [2002] (trying to connect via tcp://db:port) in /path/file.php on line 1691 [Tue Jun 21 10:29:04.011886 2016] [:error] [pid 6] [client] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] ' in /path/file.php:1691\nStack trace:\n#0 /path/file.php(1691): PDO->__construct('mysql:host=db...', '', '', Array)\n#1 /path/bootstrap.php.cache(2051): appProdProjectContainer->getPdoService()\n#2 /path/file.php(1891): Symfony\\Component\\DependencyInjection\\Container->get('pdo')\n#3 /path/bootstrap.php.cache(2051): appProdProjectContainer->getSession_Handler_PdoService()\n#4 /path/file.php(1903): Symfony\\Component\\DependencyInjection\\Container->get('session.handler...')\n#5 /path/bootstrap.php.cache(2051): appProdProjectContainer->getSession_Storage_NativeService()\n#6 /path/file.php(1887): Symfony\\Component\\DependencyInjection\\Container->get('session.storage...')\n#7 /app/jol in /path/file.php on line 1691 vmtest:~/Docker$