Created
June 20, 2018 14:00
-
-
Save ahashem/5357dfea4cfe3aa924ee723669d57842 to your computer and use it in GitHub Desktop.
mysql-5.6 Docker file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM debian:stretch-slim | |
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added | |
RUN groupadd -r mysql && useradd -r -g mysql mysql | |
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/* | |
# add gosu for easy step-down from root | |
ENV GOSU_VERSION 1.7 | |
RUN set -x \ | |
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ | |
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \ | |
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \ | |
&& export GNUPGHOME="$(mktemp -d)" \ | |
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ | |
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ | |
&& rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \ | |
&& chmod +x /usr/local/bin/gosu \ | |
&& gosu nobody true \ | |
&& apt-get purge -y --auto-remove ca-certificates wget | |
RUN mkdir /docker-entrypoint-initdb.d | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
# for MYSQL_RANDOM_ROOT_PASSWORD | |
pwgen \ | |
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db: | |
# File::Basename | |
# File::Copy | |
# Sys::Hostname | |
# Data::Dumper | |
perl \ | |
&& rm -rf /var/lib/apt/lists/* | |
RUN set -ex; \ | |
# gpg: key 5072E1F5: public key "MySQL Release Engineering <[email protected]>" imported | |
key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \ | |
export GNUPGHOME="$(mktemp -d)"; \ | |
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ | |
gpg --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \ | |
rm -rf "$GNUPGHOME"; \ | |
apt-key list > /dev/null | |
ENV MYSQL_MAJOR 5.6 | |
ENV MYSQL_VERSION 5.6.40-1debian9 | |
RUN echo "deb http://repo.mysql.com/apt/debian/ stretch mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list | |
# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql) | |
# also, we set debconf keys to make APT a little quieter | |
RUN { \ | |
echo mysql-community-server mysql-community-server/data-dir select ''; \ | |
echo mysql-community-server mysql-community-server/root-pass password ''; \ | |
echo mysql-community-server mysql-community-server/re-root-pass password ''; \ | |
echo mysql-community-server mysql-community-server/remove-test-db select false; \ | |
} | debconf-set-selections \ | |
&& apt-get update && apt-get install -y mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \ | |
&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \ | |
&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \ | |
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime | |
&& chmod 777 /var/run/mysqld \ | |
# comment out a few problematic configuration values | |
&& find /etc/mysql/ -name '*.cnf' -print0 \ | |
| xargs -0 grep -lZE '^(bind-address|log)' \ | |
| xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/' \ | |
# don't reverse lookup hostnames, they are usually another container | |
&& echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf | |
VOLUME /var/lib/mysql | |
COPY docker-entrypoint.sh /usr/local/bin/ | |
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat | |
ENTRYPOINT ["docker-entrypoint.sh"] | |
EXPOSE 3306 | |
CMD ["mysqld"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment