2016-12-22 1 views
5

У меня проблема с подключением к контейнеру MySQL.Docker Compose with PHP, MySQL, проблема подключения nginx

докер-compose.yml

version: '2' 

services: 
    mysql: 
     image: mysql:latest 
     environment: 
      MYSQL_ROOT_PASSWORD: JoeyW#1999 
      MYSQL_DATABASE: wiput 
      MYSQL_USER: web 
      MYSQL_PASSWORD: Web#1234 
     volumes: 
      - ./mysql:/var/lib/mysql 
     networks: 
      - code-network 
    php: 
     image: wiput1999/php:latest 
     volumes: 
      - ./code:/code 
     networks: 
      - code-network 
    nginx: 
     image: nginx:latest 
     ports: 
      - "80:80" 
      - "443:443" 
     volumes: 
      - ./code:/code 
      - ./site.conf:/etc/nginx/conf.d/default.conf 
      - /etc/letsencrypt:/etc/letsencrypt 
     networks: 
      - code-network 
networks: 
    code-network: 
     driver: bridge 

PHP тестовый скрипт:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "JoeyW#1999"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=wiput", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo "Connection failed: " . $e->getMessage(); 
    } 
?> 

Этот сценарий réponse меня:

Connection failed: SQLSTATE[HY000] [2002] No such file or directory 

Что случилось с моим кодом? потому что я думаю, что это должно быть хорошо

Если у кого-то есть лучшее решение Спасибо за помощь.

ответ

5

Изменение $servername = "localhost"; по $servername = "mysql";. Ваша служба mysql не находится на локальном компьютере вашего контейнера веб-сервера. Вы должны использовать название службы вместо

+0

Все еще имеют тот же ответ – wiput1999

+0

Теперь это работа. Спасибо: D – wiput1999