@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
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@q2digger
сисадмин
Вы из контейнера должны подключаться не на локалхост (127.0.0.1) , а на внешний адрес своего докер-хоста (например , скажем 192.168.1.1)
Соответственно, надо чтобы в mysql был пользователь с соответствующими разрешениями на доступ.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Spectrum Екатеринбург
от 130 000 до 200 000 руб.
от 150 000 до 220 000 руб.
07 дек. 2019, в 07:43
300 руб./за проект
07 дек. 2019, в 00:10
1000 руб./за проект