Полная ошибка Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory in /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php on line 113
, но это слишком долго для заголовка.
Я пытаюсь настроить проект Symfony локально, но я пытаюсь заставить соединение с базой данных работать.Мой parameters.yml
выглядит следующим образом
parameters:
database_host: 127.0.0.1
database_port: 3306
database_name: database_name
database_user: username
database_password: password
Я много гуглил эту проблему, и большинство людей, похоже, решают эту проблему, изменяя database_host
со localhost
на 127.0.0.1
, но это нене работает для меня.Само приложение работает через Docker, но я настроил соединение с базой данных один раз через Brew и один раз с сервером MySQL для Mac.В обоих случаях я могу подключиться через командную строку и с SequelPro / TablePlus, но всякий раз, когда я пытаюсь получить доступ к веб-сайту через браузер, я получаю ошибку «Нет такого файла или каталога».
Я также пыталсянесколько способов настройки Docker-контейнера MySQL, но не удается заставить его работать.Мой docker-compose.yml
выглядит так:
nginx:
build: nginx
ports:
- "8080:80"
links:
- php
volumes:
- ../:/app
php:
build: php-fpm
volumes:
- ../:/app
working_dir: /app
extra_hosts:
- "site.dev: 172.17.0.1"
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'database_name'
MYSQL_USER: 'username'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password_root'
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- my-db:/var/lib/mysql
Но всякий раз, когда я запускаю docker-compose up -d
, я получаю ошибку Unsupported config option for services: 'db'
.
Еще одна попытка была добавлением
mysql:
image: mysql:latest
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD='password'
- MYSQL_DATABASE='database_name'
- MYSQL_USER='username'
- MYSQL_PASSWORD='password'
К файлу docker-compose, и хотя он создает образ mysql, я не могу подключиться к нему с помощью SequelPro / TablePlus.Я запустил docker-inspect
на контейнере, чтобы получить IP (172.17.0.3), но не могу получить к нему доступ.Я могу exec
войти в него, войти в систему с помощью mysql -u root
и создать требуемого пользователя и базу данных, но затем я все еще пытаюсь реально подключиться к нему.
Запуск docker ps
действительно показывает, что контейнер sql работаетbtw;
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6de6030791d docker_nginx "nginx -g 'daemon of…" 19 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp docker_nginx_1
f26b832bb005 docker_php "docker-php-entrypoi…" 19 minutes ago Up 14 minutes 9000/tcp docker_php_1
6c2a9e657435 mysql:latest "docker-entrypoint.s…" 19 minutes ago Up 14 minutes 3306/tcp, 33060/tcp docker_mysql_1
Я также подумал, что это может быть проблема с изменениями в файле parameters.yml
, которые не синхронизируются с контейнером должным образом, так как я использую Mac (на моем старом рабочем месте нам приходилось использовать docker-синхронизировать, чтобы сделать изменения синхронизации между нашей средой разработки и фактическим контейнером), но при проверке самого контейнера с помощью exec
я вижу изменения в файле parameters.yml
.
Может быть проблема в том, что он пытаетсяподключиться к серверу mysql, работающему вне контейнера Docker?Я все еще новичок в Docker, поэтому я не удивлюсь, если это ошибка.Любые советы приветствуются, потому что я в тупике.