Проблема подключения Docker к MySQL с помощью PHP - PullRequest
0 голосов
/ 16 декабря 2018

Я начинаю с докера и хочу подключиться к своей базе данных с помощью драйвера PDO.Но, к сожалению, у меня есть ошибка, которая появляется на моей странице, и я не знаю, как ее решить.Не могли бы вы мне помочь?

Вот моя ошибка:

Неустранимая ошибка: Uncaught PDOException: PDO :: __ construct (): php_network_getaddresses: getaddrinfo fail: Нет адреса, связанного с именем хоста

Вот мой index.php:

<?php
    $db = new PDO('mysql:host=db:3306;dbname:DockerProject', "root", "root");
?>

Вот мой dockerfile:

FROM php:7.2-apache
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring pdo pdo_mysql pdo_pgsql

Вот мой docker-compose.yaml:

version: '3'

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: DockerProject
      MYSQL_USER: devuser
      MYSQL_PASSWORD: devpass
    ports:
      - "3306:3306"
  web:
    image: php_pdo:latest
    container_name: php_web
    depends_on:
      - db
    volumes:
      - ./php/:/var/www/html/
    ports:
      - "8100:80"
    stdin_open: true
    tty: true
  myadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - "8080:80"
    links:
        - db:db

1 Ответ

0 голосов
/ 16 декабря 2018

Определить dsn как

$db = new PDO('mysql:host=db;dbname=DockerProject', "root", "root");

Если вам нужно явно указать порт , используйте:

$db = new PDO('mysql:host=db;port=3306;dbname=DockerProject', "root", "root");

Кроме того, неуверен, почему dbname:DockerProject работает как правильный синтаксис dbname=DockerProject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...