Соединение разорвано при запуске команды Laravel Artisan с Docker - PullRequest
0 голосов
/ 09 мая 2018

Я использую Laravel 5.4 в Docker. Это мой docker-compose.yml файл:

version: '2'

services:
  app:
    container_name: laravel_app
    image: webdevops/php-apache-dev:ubuntu-16.04
    links:
      - mysql
    depends_on:
      - mysql
    ports:
      - 8888:80
    volumes:
      - .:/app
    environment:
      docker: 'true'
      WEB_DOCUMENT_ROOT: '/app/public'
      WEB_NO_CACHE_PATTERN: '\.(.*)$$'
      working_dir: '/app'
  mysql:
    image: mariadb:latest
    ports:
      - 8889:80
    environment:
      MYSQL_ROOT_PASSWORD: 'dev'
      MYSQL_DATABASE: 'dev'
      MYSQL_USER: 'dev'
      MYSQL_PASSWORD: 'dev'

Это соответствующая часть моего .env файла:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8889
DB_DATABASE=dev
DB_USERNAME=dev
DB_PASSWORD=dev

Я могу видеть страницу приветствия Laravel - эта сторона вещей работает. Но когда я запускаю php artisan migrate, я получаю эту ошибку:

SQLSTATE [HY000] [2002] Соединение отклонено (SQL: выберите * из information_schema.tables, где table_schema = dev и table_name = migrations)

Я попытался поиграться с параметрами host и port в файле .env.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Если вы не хотите устанавливать порт БД, как в ответе @ kotapeter, вы можете вместо этого вызвать artisan через docker, выполнив:

$ docker exec -it <name of container> php artisan migrate

Глядя на ваш docker-compose.yml, ваш контейнер может быть laravel_app_app_1, но вы можете проверить это, запустив docker ps

0 голосов
/ 09 мая 2018

Сначала отредактируйте docker-compose.yml.

mysql:
    image: mariadb:latest
    ports:
      - 8889:3306

После этого установите правильный порт БД в .env.

Ваш порт БД неверен. Вы пытаетесь подключить незащищенный порт внутри докера. В этом случае вы должны использовать DB_PORT=3306 в вашем .env.

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