Как подключить Symfony4 к mysql с помощью докера

Я пытаюсь подключить (локальная разработка) symfony4 к базе данных в докере, это контейнер докера

83d1b68ce44a        cytopia/mariadb-10.1:latest      "/docker-entrypoint.…"   3 days ago          Up About an hour    0.0.0.0:3306->3306/tcp                       devilbox_mysql_1

web работает и полностью настроен, я не понимаю, какой хост мне следует использовать в файле .env.

Благодарность

Вы используете Windows, Linux, macOS? Операционные системы используют разные способы объявления сети Docker.

A.L 09.12.2018 14:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
1
255
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы связали порт 3306 с хостом, поэтому мы должны указать Symfony использовать этот порт. Мы должны использовать адрес 127.0.0.1, потому что с localhost MySQL пытается подключиться через сокет.

Итак, у вас должно получиться что-то вроде этого:

DATABASE_URL=mysql://USER:[email protected]:3306/DATABASE_NAME

Возможно, вам потребуется настроить доступ к MariaDB:

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: 'mariadb-10.2'

См. Тип MariaDB 10.0 JSON с symfony 4

В зависимости от использования вам следует попробовать разные подходы. Если вы НЕ используете docker_compose.yml, попробуйте с именем хоста 0.0.0.0:3306, но в случае файла докеров, например, это (это для moodle, но выполняет свою работу).

Поэтому в последнем случае я использую имя услуга в качестве имени хоста, чтобы выполнить свою работу. Обычно я использую подход docker-compose.yml для настройки своей среды бега.

Также имейте в виду, что при использовании docker-compose.yml также используется файл .env для настройки, поэтому это также может вызвать конфликт.

DATABASE_URL=mysql://user:password@mariadb:3306/databaseName

В этом примере "mariadb" - это псевдоним контейнера.

Другие вопросы по теме