Я пытаюсь создать предварительно заполненный образ контейнера MySQL, соответствующий OpenShift.
Запуск контейнера с указанным пользователем (к сожалению) не вариант для нас.
Это проблема, поскольку OpenShift просто создает некоторый случайный UID без имени пользователя, поэтому настройка имени пользователя во время выполнения с помощью скрипта перед запуском службы MySQL не является опцией.
Есть ли способ заставить MySQL работать с любым случайным UID в контейнере Docker?
редактирование:
Идея, лежащая в основе этого вопроса, заключается в возможности запуска контейнера MySQL, подобного этому
Dockerfile
для randomusermysql:example
FROM mysql:5.7.22
#IMPORTANT: MySQL Container runs init in alphanumerical order!
COPY src/some.sql /docker-entrypoint-initdb.d/
ENV MYSQL_ROOT_PASSWORD='somepw'
RUN mkdir -p /var/lib/mysql2 && \
chown -R mysql:mysql /var/lib/mysql2 && \
chmod -R 777 /var/lib/mysql2 && \
sed -i 's|/var/lib/mysql|/var/lib/mysql2|g' /etc/mysql/mysql.conf.d/mysqld.cnf && \
sed -i 's|exec "$@"||g' /entrypoint.sh && \
/entrypoint.sh mysqld && \
chmod -R 777 /var/lib/mysql2/ && \
chown -R mysql:mysql /var/lib/mysql2 && \
find /var/lib/mysql2/ -name "*.cnf" -exec chmod 775 {} \; && \
echo 'exec "$@"' >> /entrypoint.sh
Затем запустив это так
docker run -u 123456789 randomusermysql:example
При запуске контейнера возникает следующая ошибка
2018-05-22T11:39:35.084034Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table storage engine for 'user' doesn't have this option
2018-05-22T11:39:35.084235Z 0 [ERROR] Aborting
Нет возможности передать пользователя как docker ENV
при запуске контейнера
edit2: неверный текст награды.
Исправлено заявление о вознаграждении:
Требуется решение с предварительно заполненной базой данных MySQL без простого копирования файлов дампа в каталог /docker-entrypoint-initdb.d!