В последнее время мой докер-контейнер отказывается от соединений. В прошлом это работало хорошо, этот вопрос новый и пока не имеет объяснения.
Остановка и перезапуск контейнера не имеет никакого эффекта.
Остановка и перезапуск Docker для Desktop для Mac не имеет никакого эффекта.
Я могу решить это только перезагрузкой моего ноутбука OSX. (macOS Mojave v 10.14.5)
Затем он будет работать некоторое время, а затем снова начнет блокировать попытки подключения
Я могу выполнить в контейнер, например,
docker exec -it db /bin/bash
Изнутри контейнера я могу получить доступ к mysql без проблем.
Я попытался включить общий журнал в mysql, чтобы попытаться отладить его:
Не показывает активности ...
На моем ноутбуке достаточно свободного дискового пространства (188 ГБ)
Все это работало хорошо в течение последних 6 месяцев, но просто внезапно начало блокировать соединения после кратковременной работы на прошлой неделе или около того ...
Спасибо за любые подсказки или идеи
Вот мой Dockerfile
FROM mysql:5.7
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y procps
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y debianutils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y iputils-ping
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y net-tools
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y less
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y man
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y sudo
WORKDIR .
COPY ./my.cnf /etc/mysql/my.cnf
#CMD ["mysqld", "--general_log=1", "--log-raw", "--log-error"]
CMD ["mysqld"]
мой файл docker-compose:
(MYSQL_DATA_FOLDER - это переменная среды, для которой задан правильный путь
version: '3.5'
services:
database:
image: database
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
volumes:
- mydatavolume:${MYSQL_DATA_FOLDER}
build:
context: .
volumes:
mydatavolume:
networks:
default:
name: dev_network
driver: bridge
Как мне это запустить:
docker-compose build;
docker-compose run --service-ports --volume=$MYSQL_DATA_FOLDER:/var/lib/mysql --name db --rm database
Как я обычно подключаюсь (через клиент mysql в терминале osx)
mysql -h localhost -P 3306 --protocol=tcp -u root
Я также пробовал варианты с использованием 127.0.0.1, а также IP-адреса, обнаруженного Docker Inspect
My my.cnf
[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
попытался добавить:
bind-address=0.0.0.0
к вышесказанному ... не помогает
таблица пользователей
mysql> SELECT host, user FROM mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| % | some_user |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
5 rows in set (0.01 sec)
Новая информация:
Я удалил том данных и позволил ему создать новый. Теперь проблема исчезла - так что, похоже, проблема MySQL, а не проблема Docker. Я все еще хотел бы знать, как отладить такого рода проблемы MySQL, когда это происходит ..