Skip to content

Instantly share code, notes, and snippets.

@johnhpatton
Created July 11, 2024 19:03
Show Gist options
  • Save johnhpatton/5922e56638c3703e3bfd77e4e77f36ab to your computer and use it in GitHub Desktop.
Save johnhpatton/5922e56638c3703e3bfd77e4e77f36ab to your computer and use it in GitHub Desktop.
MySQL Dockerfile
FROM bitnami/mysql:5.7 AS initial
ENV ALLOW_EMPTY_PASSWORD=yes
ENV MYSQL_MODE=""
USER root
RUN apt update && \
apt install -y unzip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
USER 1001
# This needs to be fleshed out to do a mysqlimport:
COPY ./some-mysqldump-output.zip /tmp/dumpfile.zip
# The following MUST all be within a single RUN block - don't split it up
RUN . /opt/bitnami/scripts/mysql-env.sh && \
/opt/bitnami/mysql/bin/mysqld --initialize-insecure --basedir=/opt/bitnami/mysql --datadir=/bitnami/mysql/data && \
/opt/bitnami/scripts/mysql/run.sh & \
while ! mysqladmin -u root ping >/dev/null 2>&1 ; do echo "Waiting for MySQL Server..." ; sleep 1 ; done && \
mysql -u root -e "CREATE DATABASE prod; CREATE USER 'dba'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'dba'@'%'; FLUSH PRIVILEGES;" && \
unzip -p /tmp/opr-prod-cluster-latest.zip | mysql -u root prod && \
mysql -N -u root -e "show full tables where Table_Type = 'BASE TABLE';" prod | \
sed -e 's/^/analyze table /' -e 's/BASE TABLE/;/' | \
mysql -u root prod && \
mysqladmin -u root shutdown && \
wait ${DB_PID_FILE}
FROM bitnami/mysql:5.7
COPY --from=initial /bitnami/mysql/data/. /bitnami/mysql/data/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment