Пытается развернуть приложение Symfony 3.2/Doctrine для Swisscom PaaS.Соединение с базой данных отказалось от Symfony/PHP
Buildpack (PHP 7, HTTPD и т.д.) установлены, композитор работает и установка зависимостей, но при вызове композитора после-команд, как кэш: ясно, что я получаю:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
мой манифест .yml:
applications:
- services:
- dbservice
buildpack: php_buildpack
host: myapp
name: MyApp
instances: 1
memory: 640M
env:
SYMFONY_ENV: prod
PHP_INI_SCAN_DIR: .bp-config/php/conf.d
мой options.json:
"WEB_SERVER": "httpd",
"COMPOSER_INSTALL_OPTIONS": ["--no-dev --optimize-autoloader --no-progress --no-interaction"],
"COMPOSER_VENDOR_DIR": "vendor",
"SYMFONY_ENV": "prod",
"WEBDIR": "web",
"PHP_MODULES": "fpm",
"PHP_VERSION": "{PHP_70_LATEST}",
"PHP_EXTENSIONS": [
"bz2",
"zlib",
"curl",
"mcrypt",
"openssl",
"mbstring",
"pdo",
"pdo_mysql"
],
"ZEND_EXTENSIONS": [
"opcache"
]
И это, как я прочитал учетные данные базы данных из VCAP и установить параметры в Symfony (которые прекрасно работают с локальной настройки VCAPSERVICES окр VARS):
$vcapServices = json_decode($_ENV['VCAP_SERVICES']);
$container->setParameter('database_driver', 'pdo_mysql');
$db = $vcapServices->{'mariadb'}[0]->credentials;
$container->setParameter('database_host', $db->host);
$container->setParameter('database_port', $db->port);
$container->setParameter('database_name', $db->name);
$container->setParameter('database_user', $db->username);
$container->setParameter('database_password', $db->password);
// Just for debug:
echo 'User: ';
var_dump($container->getParameter('database_user'));
echo 'Db: ';
var_dump($db);
служба работает, как var_dump доставить ожидаемые значения. Но все же соединение отказывается.
Что я делаю неправильно?
**** EDIT **** Аналогичная проблема, как представляется, здесь, но без решения: Cloud foundry p-mysql
**** EDIT ****
Я отлажена вниз право оператор, в котором вызывается конструктор PDO.
Он вызывается со следующими параметрами:
$dsn = mysql:host=10.0.20.18;port=3306;dbname=CF_DB922DD3_CACB_4344_9948_746E585732B5;
$username = "myrealusername"; // as looked up in VCAP_SERVICES
$password = "myrealpassword"; // as looked up in VCAP_SERVICES
$options = array();
Все выглядит точно так же, как это можно увидеть на веб-консоли для службы связывания.
Является unix_socket, необходимых для успешного подключения?
**** EDIT ****
Как Symfony используют некоторые послеустановочную-команду композиторов (в данном случае, например, для очистки и разогреть кэш), которые требуют уже рабочего подключения к базе данных, что это не поддерживается службами БД с помощью cloudfoundry, пока контейнер не полностью построен и развернут?
Избегайте идей.
спасибо, в конце концов, я узнал при поддержке swisscomdev, что во время промежуточного соединения базы данных не было доступно. подтвердит, что в понедельник и сообщите об этом здесь. – LBA
, поэтому я смог подключиться к работающему db повсюду, единственная «недостающая ссылка» была неполной привязкой моего приложения к службе db во время этапа приложения. – LBA