Как связать порт mysql с хоста в docker контейнер без конфликта портов - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть контейнер docker, на котором запущено приложение Flask, которое подключается к серверу mySQL. Сервер mySQL размещается на главном компьютере с портом 3308 на компьютере windows 10.

При выполнении docker run -p 5000:5000 -p 3308:3308 -t webui

я получаю сообщение об ошибке Ports are not available: listen tcp 0.0.0.0:3308: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. из-за порта используется сервером mySQL на хост-компьютере

Как сопоставить порт mySQL с контейнером docker, чтобы приложение Flask могло обращаться к базе данных?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Проблема была вызвана именем хоста. Порт базы данных mySQL не нужно было привязывать к контейнеру, поскольку ему не нужно было принимать входящие вызовы, только исходящие к базе данных. Решено путем добавления новой записи в файл контейнера / etc / hosts, как описано здесь .

0 голосов
/ 11 февраля 2020

Есть 2 способа добиться этого. Первый подход - рекомендуемый.

Первый - добавить запись в / etc / hosts внутри контейнера:

docker run -p 5000:5000 -p 3308:3308 --add-host database:<HOST_IP> -t webui

Вам необходимо заменить HOST_IP на сетевой IP-адрес вашего хост. Затем вы можете ссылаться на базу данных внутри вашего контейнера, используя имя «база данных» (вы также можете настроить это).

Второй - привязать ваш контейнер к интерфейсу вашего хоста:

docker run -p 5000:5000 -p 3308:3308 --bind 127.0.0.1 -t webui

Затем вы можете обратиться к своей базе данных с 127.0.0.1 внутри вашего контейнера.

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