Приложение Laravel, работающее в Docker, не может извлечь данные из базы данных MySQL, расположенной на виртуальной машине VirtualBox (SQLSTATE [HY000] [2002] Соединение отклонено) - PullRequest
0 голосов
/ 22 мая 2019

На моем компьютере я работаю под управлением Windows 10. У меня есть виртуальная машина с Ubuntu 18.04. У меня есть проект Laravel, который работает на Docker. У меня есть сервер MySQL, который работает на моей виртуальной машине. Я использую docker-compose.yml и Dockerfile для сборки проекта. У меня нет контейнера базы данных MySQL: MySQL работает на моей виртуальной машине.

Моя проблема в том, что я не могу получить доступ к своей базе данных MySQL, называемой mydatabase. Всякий раз, когда я делаю php artisan migrate или захожу в свой проект на localhost:8080, я получаю ошибку

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `sometable`)                                      

Я могу запустить проект, если я запускаю его на компьютере с операционной системой Ubuntu. Но не с виртуальной машиной. Я могу получить доступ к своему серверу MySQL с виртуальной машины с

mysql --host=127.0.0.1 -u root -p и мой пароль также root.

.env file

DB_HOST=127.0.0.1
HOSTNAME=b2d4219c8143
APP_NAME=myLaravelApp
APP_URL=http://localhost
DB_CONNECTION=mysql
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DB_DATABASE=mydatabase
_=/usr/bin/env
PWD=/var/www/html
DB_PASSWORD=root
APP_DEBUG=true
APP_KEY=base64:C1IQl08HeaUSPfahtrZLL1lL81n3ELMmJd9Tkli6CtA=
DB_USERNAME=root
SHLVL=6
HOME=/root
LOG_CHANNEL=file

докер-compose.yml

version: '1'
services:
  web:
    build:
      context: ./
    working_dir: /var/www/html
    ports:
      - 8080:80
    volumes:
      - ./:/var/www/html
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
         - DB_HOST=127.0.0.1
         - HOSTNAME=b2d4219c8143
         - DB_DATABASE=mydatabase
         - PWD=/var/www/html
         - DB_PASSWORD=root
         - SHLVL=3
         - HOME=/root
         - DB_USERNAME=root
         - LOG_CHANNEL=file
         - DB_CONNECTION=mysql
         - APP_NAME=fes
         - APP_ENV=local
         - APP_KEY=base64:C1IQl08HeaUSPfahtrZLL1lL81n3ELMmJd9Tkli6CtA=
         - APP_DEBUG=true
         - APP_URL=http://localhost

Dockerfile

FROM nginx:latest

RUN apt-get update && apt-get install -y php-gd
RUN apt-get -y install php7.2-zip

COPY entrypointcust.sh /entrypointcust.sh

RUN chmod +x /entrypointcust.sh

EXPOSE 80

Мой ipv4-адрес на виртуальной машине

10.0.2.15

Есть предложения, почему я не могу подключиться к своей базе данных?

DB_HOST=localhost в .env файле тоже не работает.

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