Delphi Firedac подключается к MySQL в контейнере докеров
Я создал образ MySQL в своей Windows 10, используя настройки по умолчанию из Docker.
Я запустил контейнер с помощью этой команды:
docker run --name local-mysql --network="host" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d <your-docker-Image>
Я использовал параметр --network в надежде, что смогу подключиться к контейнеру с моего хост-компьютера.
Затем я выполнил эту команду, чтобы подключиться к контейнеру из оболочки MySQL.
docker exec -it mysql bash -l
Мне удалось подключиться с помощью этого
mysql -h localhost -P 3306 --protocol=tcp -u root -p
Используя Delphi и настроив FireDac на использование DriverId MySQL, я указал хост как localhost, порт 3306, пользователя как root и пароль.
Но я получаю эту ошибку подключения
[FireDAC][Phys][MySQL] Cannot connect to MySQL server on 'localhost:3306' (10061)
Я безуспешно пытался использовать 127.0.0.1 и 0.0.0.0 и с той же ошибкой.
Я был бы признателен, если бы кто-нибудь попробовал его с DelphiFireDac для подключения к контейнеру MySQL, размещенному на том же компьютере.
Заранее спасибо.
1 ответ
Мне удалось решить проблему, используя эту команду для запуска изображения
docker run --name local-mysql -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d <your-docker-Image>
Я использовал другой порт хоста (3307) для сопоставления с 3306 по умолчанию
Я смог сначала протестировать его с помощью bash
mysql -h 127.0.0.1 -P 3306 -u root -p
А в Delphi FireDac я использовал следующее для подключения
Host=127.0.0.1
Port=3307
User_Name=root
Password=my-secret-pw
И все хорошо. Надеюсь, это поможет тому, кто пытается сделать то же самое.