PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 21/07/2015 19:27:28

bouhda
Membre

[résolu] docker et PDO pgsql

Bonjour !

A des fins de tests automatisés j'essaie d'utiliser docker dans mon workflow de test. J'utilise l'image officielle prise sur dockerhub.

Dans une fonction setUp() j'ai le code suivant:

        echo 'starting postgresql docker image';
        echo shell_exec('docker run --name test-postgres -e POSTGRES_PASSWORD=test -d postgres');
        echo shell_exec('docker start test-postgres');
        sleep(3);


Une fois que cette fonction est lancée j'essaie d'instancier un objet pdo comme suivant :

new \PDO('pgsql:host=127.0.0.1;port=5432;dbname=postgres;user=postgres;password=test');


Mais ll'erreur suivante est retournée :

exception 'PDOException' with message 'SQLSTATE[08006] [7] could not connect to server: Connection refused
==>     Is the server running on host "127.0.0.1" and accepting
==>     TCP/IP connections on port 5432?' in /var/www/PostGreSqlJsonRepository/src/ConnectionFactory.php:22



Quand je lance l'image manuellement j'arrive à me connecter au server en rentrant :
pgsql -h 127.0.0.1 postgres postgres

Bien à vous

bouhda

Dernière modification par bouhda (22/07/2015 17:13:11)

Hors ligne

#2 21/07/2015 19:54:13

rjuju
Administrateur

Re : [résolu] docker et PDO pgsql

Bonjour,

Quelle est l'adresse de l'image docker que vous utilisez ? Difficile de vous aider sans savoir ce qu'elle fait.

Sinon, l'erreur signifie que l'instance est arrêtée, n'écoute pas sur le bon port ou qu'un firewall ou autre empêche la connexion. Vous pouvez regarder dans les logs postgres (s'il y en a) si l'instance démarre bien, et au bout de combien de temps elle s'arrête.

Hors ligne

#3 22/07/2015 17:12:10

bouhda
Membre

Re : [résolu] docker et PDO pgsql

J'ai résolu l'erreur, il manquait -p 5432:5432.
Nénamoins l'approche n'est pas la bonne, car je suis obligé de mettre un sleep(5) en attendant que le server postgre s'active, on m'a recommandé de mettre en place un conteuneur php chargé de lancer les tests et qui serait lié à un conteneur postgre-sql

Hors ligne

Pied de page des forums