Файл my.cnf не обновляется в контейнере docker — wodby/mariadb

Сегодня я столкнулся с проблемой, как обновить файл my.cnf для MySQL в контейнере docker — wodby/mariadb, если он никак не обновляется. И при этом, что вы только не делали. Все дело в том, что мне стало нужно в директиву [mysqld] прописать настройку sql_mode. И я потратил на это полдня.

В итоге я выкатил эту настройку, хотя закончить задачу по работе мне это не помогло.

В чем была проблема?

Я заменял файл my.cnf своей модифицированной его версией (где sql_mode = ‘ONLY_FULL_GROUP_BY’) в контейнере wodby/mariadb. Потом перезагрузил через docker-compose up контейнеры и в итоге никаких изменений в контейнере mariadb не происходило – файл my.cnf в нем не обновлялся (моя строчка sql_mode = ‘ONLY_FULL_GROUP_BY’ чудесным образом исчезала).

Причина такого поведения была не в моих неправильных действиях, а в скрипте docker-entrypoint.sh, который был прописан в конфиге контейнера wodby/mariadb.

Я скопировал этот файлик себе локально.

Видно, что скрипт docker-entrypoint.sh при создании контейнера тупо копировал свой шаблон файла my.cnf и затирал тот, который я тщетно модифицировал в контейнере.

Удаляем строку gotpl «/etc/gotpl/${minor_ver}/my.cnf.tmpl» > «/etc/mysql/my.cnf» с помощью nano.

Копируем отредактированный файл обратно в контейнер.

Добавляем наш конфиг sql_mode = ‘ONLY_FULL_GROUP_BY’ в my.cnf в секцию [mysld]

Копируем отредактированный файл обратно в контейнер

Создаем свой модифицированный образ

Правим файл compose.yml

Строку image: wodby/mariadb:$MARIADB_TAG заменяем на gamelot_mariadb

Поднимаем контейнеры командой docker-compose up.

Проверяем изменения

Если все было проделано правильно, нужная настройка появится 100%.

Запрос в mysql:

Ответ mysql, ради чего было потрачено полдня и заработана головная боль):

ONLY_FULL_GROUP_BY

Щелкните ниже, чтобы поставить оценку!
Всего: 0 В среднем: 0

Написать комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *