Laravel on Docker [2002] Отказ в соединении с Mysql через порт 3307 - PullRequest
0 голосов
/ 10 мая 2019

Получено приложение Laravel 5.8, запущенное локально в Docker.

Я могу запустить приложение в своем браузере, подключиться к базе данных в Sequel Pro, но когда я пытаюсь перенести базу данных, я получаю ужас[2002] Connection refused ошибка.

Я установил порт mysql на 3307, поскольку у меня есть другой контейнер mysql, использующий 3306 для другого проекта.Я не хочу останавливать и запускать Docker для каждого проекта, так как я могу регулярно переключаться между двумя, поэтому я использую разные порты.

Вот раздел mysql в docker-составьте файл.

mysql:
    image: mysql:5.7
    ports:
      - "3307:3306"
    environment:
      MYSQL_HOST: 127.0.0.1
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: forecast
      MYSQL_USER: forecast
      MYSQL_PASSWORD: secret
    volumes:
      - mysql:/var/lib/mysql
    networks:
      - forecast

Вот мои ключи настройки файла .env DB

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=forecast
DB_USERNAME=forecast
DB_PASSWORD=secret

Также стоит отметить, что я запускаю приложение на порту 81 вместо 80 по той же причине,В моем браузере я должен поставить {domain.testing}:81, который работает.

Ответы [ 3 ]

0 голосов
/ 10 мая 2019

измените DB_HOST=127.0.0.1 на DB_HOST=mysql, и это должно работать.Потому что в контейнерной сети ваш хост mysql , а не 127.0.0.1.

А также из-за переадресации портов нет необходимости изменять .env 3306 на 3307. docker будет делать на основе сетевых настроек,Оставьте это как DB_PORT=3306

0 голосов
/ 10 мая 2019

Изменить 127.0.0.1 на mysql

mysql:
    image: mysql:5.7
    ports:
      - "3307:3306"
    environment:
      MYSQL_HOST: mysql
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: forecast
      MYSQL_USER: forecast
      MYSQL_PASSWORD: secret
    volumes:
      - mysql:/var/lib/mysql
    networks:
      - forecast
0 голосов
/ 10 мая 2019

Я понял это для тех, у кого возникла такая же проблема.

Мне пришлось настроить файл .env.

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Поэтому я изменил DB_HOST на mysqlи DB_PORT возвращается к 3306, поскольку докер отображает его на 3307. Затем он успешно работает.

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