@kimisa

Как подключить в докере локальную базу в php?

Файл docker-compose.yml имеет вид
version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - 9080:80
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./:/var/www/html
      - ./logs:/var/log/nginx
    depends_on:
      - php
  php:
    build:
      context: ./docker/php
    ports:
      - 9000:9000
    volumes:
      - ./:/var/www/html
      - ./logs:/var/log/
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    restart: always
    extra_hosts:
      - host.docker.internal:$DOCKER_HOST_IP

Сайт запускается. Но нужно еще подключение к базе, которая уже развернута локально. Пробовала добавить в образы network_mode: "host". Но у меня домен перестает работать в браузере.
Подключение к базе через консоль получила:
docker run --rm -it --network=host mysql php -h 127.0.0.1 -uroot -p

Вот думаю как теперь прикрутить к моим образам.
Код, который пробую
//$link = mysqli_connect('172.17.0.1', 'root', '1234qwer');
$link = mysqli_connect('127.0.0.1', 'root', '1234qwer');

if (!$link) {
    echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
    echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

В конфиге Mysql прописала
bind-address = 127.0.0.1
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@q2digger
сисадмин
Вы из контейнера должны подключаться не на локалхост (127.0.0.1) , а на внешний адрес своего докер-хоста (например , скажем 192.168.1.1)
Соответственно, надо чтобы в mysql был пользователь с соответствующими разрешениями на доступ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы