2017-10-11 4 views
0

Je tente d'installer docker-conteneur: Apache/PHP7/Mysql 5.7 via docker-composer sur Ubuntu 16.04.Docker (Ubuntu 16.04) Apache/PHP7/Mysql5_7 - Base de données: Échec de la connexion: Connexion refusée

Le problème est que je n'obtiens aucune connexion à la base de données de l'index.php (localhost: 8080). Si j'essaie de me connecter, cela dit: "Connexion échouée: Connexion refusée".

apache-php7 dockerfile: https://github.com/nimmis/docker-apache-php7/blob/master/Dockerfile

Les dossiers sont les suivants:

apache-php7 (y compris Dockerfile)

html (y compris index.php)

mysql (données MySQL)

docker-compose.yml:

version: '2' 

services: 
    php: 
    build: apache_php7 
    container_name: apache_php7 
    ports: 
     - "8080:80" 
     - "443:443" 
    volumes: 
     - ./html:/var/www/html 
    links: 
     - db 
    db: 
    image: mysql:5.7 
    container_name: mysql_5_7 
    volumes: 
    - ./mysql:/var/lib/mysql 
    ports: 
    - "127.0.0.1:3306:3306" 
    environment: 
    - MYSQL_ROOT_PASSWORD=test 
    - MYSQL_USER=admin 
    - MYSQL_PASSWORD=test  
    - MYSQL_DATABASE=database 

index.php (php-extrait)

<?php 
$servername = "127.0.0.1"; 
$username = "admin"; 
$password = "test"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
echo "Connected successfully"; 
?> 

i recherché Discussions similaires et a essayé cela aussi avec PHP, etc.-PDO - rien fait le travail.

Je suis en mesure de se connecter dans le conteneur mysql manuellement via Terminal avec la commande: docker exec bash -it, et se connecter via "root -p mysql" -> passwort: test.

+0

Avez-vous quelque chose qui s'exécute localement (comme une instance MySQL) qui écoute sur le port 3306? – jcorry

+0

Je ne pense pas que vous devriez utiliser 127.0.0.1, exécutez 'docker inspecter db | grep IPAddress' et utilisez cette adresse dans votre connexion. –

+0

Non, il n'y a pas de bases de données locales installées, je ferais tout avec docker. si j'exécute la commande docker inspect (après l'exécution de docker-composer vers le haut), il est dit: "Erreur: Aucun objet de ce type: db" – beer

Répondre

0

son résolu. Tout d'abord je reçois le nom/id du conteneur mysql tourne via

docker ps 

puis j'ai obtenu une adresse IP de la commande

docker inspect <name of container> | grep IPAddress 

comme dans cette capture d'écran.

command from nigel

J'ai aussi modifié cette ligne dans mon docker-compose.yml:

volumes: 
    - /var/lib/mysql:/var/lib/mysql 

Merci à Nigel Ren et grâce à jcorry pour répondre. Maintenant tout fonctionne.