I am trying to create an OpenShift compliant prefilled MySQL container image.
Running the container with a specified user is (sadly) not an option for us.
This is a problem since OpenShift simply creates some random UID without a username so setting a username at runtime with a script before starting the MySQL service is not an option.
Is there any way to get MySQL to run with any random UID in a docker container?
edit:
The idea behind this question is being able to start a MySQL container like this
Dockerfile
for 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
Then starting it like this
docker run -u 123456789 randomusermysql:example
Results in the following error when starting the container
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
There is no possibility of passing the user as docker ENV
when starting the container
edit2: Bounty text is incorrect.
Corrected bounty statement:
A solution is needed with a prefilled MySQL database without just copying the dump files into /docker-entrypoint-initdb.d directory!
Run MySQL docker container as random (non-root) linux user?
versusA solution is needed to prefill a MySQL database without just copying the dump files into /docker-entrypoint-initdb.d directory!
– PompeyVOLUME /var/lib/mysql
. One a volume is declared, it cannot have any content in the upcoming layers. So even if you initialise a file it won't be there – Bailey