@aevsergeevich

Не могу понять, почему ошибка SQLSTATE[HY000] [2002] Connection refused | laravel/docker?

Внедряю Docker в проект на Laravel, но при выполнении миграций в базе данных контейнера, возникает ошибка:

SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select table_name as `name`, (data_length + index_length) as `size`, table_comment as `comment`, engine as `engine`, table_collation as `collation` from information_schema.tables where table_schema = 'u2495676_default' and table_type in ('BASE TABLE', 'SYSTEM VERSIONED') order by table_name)

Перепроверял все env, docker-compose и прочие настройки, чистил кеш, какой только можно. Разобраться не получилось.
DB_HOST указан как название сервиса docker.

Docker-compose:

services:
    nginx:
        image: "nginx:stable-alpine"
        ports:
            -   "8000:80"
        volumes:
            -   ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
            - .:/var/www/laravel
        depends_on:
            -   mysql
            -   php
    php:
        build:
            context: dockerfiles
            dockerfile: php.Dockerfile
        volumes:
            -   .:/var/www/laravel
    mysql:
        image: mysql:8.0
        ports:
            -   "3316:3306"
        environment:
            - MYSQL_DATABASE=${DB_DATABASE}
            - MYSQL_USER=${DB_USERNAME}
            - MYSQL_PASSWORD=${DB_PASSWORD}
            - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
    composer:
        build:
            context: dockerfiles
            dockerfile: composer.Dockerfile
        volumes:
            -   .:/var/www/laravel
    artisan:
        build:
            context: dockerfiles
            dockerfile: php.Dockerfile
        volumes:
            -   .:/var/www/laravel
        entrypoint: ["php", "/var/www/laravel/artisan"]

env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3316
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
DB_PORT=3316 - это порт, который ты пробросил из контейнера в хостовую систему, в контейнере MySQL слушает порт 3306 к нему и надо подключаться.

Если не планируешь подключаться к базе из хостовой системы, то пробрасывать порт нет необходимости.
Ответ написан
Ваш ответ на вопрос

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

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