Docker: плохая производительность с mysql 5.6 -> как передать mysql аргумент изображению в Dockerfile - PullRequest
0 голосов
/ 08 апреля 2020

Сценарий

У меня есть docker контейнер, который просто существует для тестирования. Идея состоит в том, чтобы создать изображение из файла dockerfile, создать контейнер из изображения, который анализирует файл sql БД, а затем запустить его, пока я тестирую новую функцию. После этого (или ранее, когда тестовая БД была повреждена из-за какой-то ошибки), я останавливаю контейнер и затем удаляю его вместе с его изображением. В качестве последнего шага я запускаю docker volume prune -f, чтобы очистить все.

Таким образом, я могу просто развиваться, не заботясь о том, повлияют ли мои изменения на мой локальный БД или нет, потому что чистый - всего лишь одним нажатием кнопки.

Это хорошо работает до тех пор, пока я использую меньшую тестовую БД (ее размер составляет от 12 до 13 МБ). Как только я начинаю использовать больший (примерно 300 МБ), производительность становится настолько плохой, что мой веб-интерфейс регулярно сообщает об исключениях тайм-аута, потому что бэкэнд никогда не доставляет данные.

Как примечание: я работаю на windows машине.

Исследования

  1. https://yktoo.com/en/blog/post/2018/07/02-slow-connection-to-mysql-in-docker/
  2. https://forums.docker.com/t/mysql-slow-performance-in-docker/37179/19
  3. https://docs.docker.com/engine/reference/commandline/run/
  4. https://docs.docker.com/engine/reference/builder/#arg

Вопрос

Первый Источник утверждает, что мне, возможно, придется добавить --skip-name-resolve в качестве аргумента. В качестве примера она показывает docker run -e MYSQL_ROOT_PASSWORD=secret mysql:5.7.16 --skip-name-resolve.

Теперь я использую dockerfile и, хотя смотрю на источники 3 и 4 дольше, чем хотелось бы признать, я просто не могу понять, как измените мой dockerfile, чтобы изображение получало `--skip-name-resol.

Итак, как do Я добавляю этот аргумент, чтобы мой dockerfile знал, что он применяется к mysql DB?

Дубликат

Я нашел этот вопрос, но он касается того, как передавать переменные ENV при использовании docker run: передавать аргументы из docker run to dockerfile

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