mysql.dockerfile 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. FROM ubuntu:22.04
  2. ARG MYSQL_VERSION=8.0
  3. COPY create.sql /tmp/
  4. COPY my.cnf ./
  5. ARG DEBIAN_FRONTEND=noninteractive
  6. ADD "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x859be8d7c586f538430b19c2467b942d3a79bd29" \
  7. /etc/apt/keyrings/mysql.asc
  8. RUN chmod 644 /etc/apt/keyrings/mysql.asc && \
  9. apt-get -yqq update && \
  10. apt-get -yqq install \
  11. apt-utils \
  12. locales \
  13. lsb-release && \
  14. echo "deb [ signed-by=/etc/apt/keyrings/mysql.asc ] http://repo.mysql.com/apt/ubuntu $(lsb_release -cs) mysql-${MYSQL_VERSION}" > \
  15. /etc/apt/sources.list.d/mysql.list && \
  16. locale-gen en_US.UTF-8
  17. ENV LANG=en_US.UTF-8
  18. ENV LANGUAGE=en_US:en
  19. ENV LC_ALL=en_US.UTF-8
  20. # https://bugs.mysql.com/bug.php?id=90695
  21. RUN ["/bin/bash", "-c", "debconf-set-selections <<< \"mysql-server mysql-server/lowercase-table-names select Enabled\""]
  22. RUN ["/bin/bash", "-c", "debconf-set-selections <<< \"mysql-community-server mysql-community-server/data-dir select 'Y'\""]
  23. RUN ["/bin/bash", "-c", "debconf-set-selections <<< \"mysql-community-server mysql-community-server/root-pass password secret\""]
  24. RUN ["/bin/bash", "-c", "debconf-set-selections <<< \"mysql-community-server mysql-community-server/re-root-pass password secret\""]
  25. RUN apt-get -yqq update && \
  26. apt-get -yqq install mysql-server && \
  27. mv /etc/mysql/my.cnf /etc/mysql/my.cnf.orig && \
  28. mv my.cnf /etc/mysql/my.cnf && \
  29. rm -rf /ssd/log/mysql /ssd/mysql && \
  30. cp -Rp /var/lib/mysql /ssd && \
  31. cp -Rp /var/log/mysql /ssd/log && \
  32. mkdir -p /var/run/mysqld && \
  33. chown -R mysql:mysql /ssd /var/lib/mysql /var/log/mysql /var/run/mysqld && \
  34. (mysqld &) && \
  35. until mysqladmin -uroot -psecret ping; do sleep 1; done && \
  36. mysqladmin -uroot -psecret flush-hosts && \
  37. mysql -uroot -psecret < /tmp/create.sql && \
  38. mysqladmin -uroot -psecret shutdown && \
  39. chown -R mysql:mysql /ssd /var/lib/mysql /var/log/mysql /var/run/mysqld
  40. CMD ["mysqld"]