From eeb0c33dfcad3db46a0dfb24c352d2a1601c7667 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Thu, 26 Jan 2017 11:57:56 -0800 Subject: [PATCH] Add "openssl" and invoke "mysql_ssl_rsa_setup" at runtime so that automatic SSL works the same as the MySQL packages --- 5.7/Dockerfile | 8 +++++++- 5.7/docker-entrypoint.sh | 7 +++++++ 8.0/Dockerfile | 8 +++++++- 8.0/docker-entrypoint.sh | 7 +++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/5.7/Dockerfile b/5.7/Dockerfile index 94fd1e0de..2f19033b8 100644 --- a/5.7/Dockerfile +++ b/5.7/Dockerfile @@ -19,12 +19,18 @@ RUN set -x \ RUN mkdir /docker-entrypoint-initdb.d +RUN apt-get update && apt-get install -y --no-install-recommends \ +# for MYSQL_RANDOM_ROOT_PASSWORD + pwgen \ +# for mysql_ssl_rsa_setup + openssl \ # 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 -RUN apt-get update && apt-get install -y perl pwgen --no-install-recommends && rm -rf /var/lib/apt/lists/* + perl \ + && rm -rf /var/lib/apt/lists/* RUN set -ex; \ # gpg: key 5072E1F5: public key "MySQL Release Engineering " imported diff --git a/5.7/docker-entrypoint.sh b/5.7/docker-entrypoint.sh index eb01ec1ad..ea515ceca 100755 --- a/5.7/docker-entrypoint.sh +++ b/5.7/docker-entrypoint.sh @@ -87,6 +87,13 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then "$@" --initialize-insecure echo 'Database initialized' + if command -v mysql_ssl_rsa_setup > /dev/null && [ ! -e "$DATADIR/server-key.pem" ]; then + # https://github.com/mysql/mysql-server/blob/23032807537d8dd8ee4ec1c4d40f0633cd4e12f9/packaging/deb-in/extra/mysql-systemd-start#L81-L84 + echo 'Initializing certificates' + mysql_ssl_rsa_setup --datadir="$DATADIR" + echo 'Certificates initialized' + fi + "$@" --skip-networking --socket=/var/run/mysqld/mysqld.sock & pid="$!" diff --git a/8.0/Dockerfile b/8.0/Dockerfile index 6bf14295d..2cba5af53 100644 --- a/8.0/Dockerfile +++ b/8.0/Dockerfile @@ -19,12 +19,18 @@ RUN set -x \ RUN mkdir /docker-entrypoint-initdb.d +RUN apt-get update && apt-get install -y --no-install-recommends \ +# for MYSQL_RANDOM_ROOT_PASSWORD + pwgen \ +# for mysql_ssl_rsa_setup + openssl \ # 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 -RUN apt-get update && apt-get install -y perl pwgen --no-install-recommends && rm -rf /var/lib/apt/lists/* + perl \ + && rm -rf /var/lib/apt/lists/* RUN set -ex; \ # gpg: key 5072E1F5: public key "MySQL Release Engineering " imported diff --git a/8.0/docker-entrypoint.sh b/8.0/docker-entrypoint.sh index eb01ec1ad..ea515ceca 100755 --- a/8.0/docker-entrypoint.sh +++ b/8.0/docker-entrypoint.sh @@ -87,6 +87,13 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then "$@" --initialize-insecure echo 'Database initialized' + if command -v mysql_ssl_rsa_setup > /dev/null && [ ! -e "$DATADIR/server-key.pem" ]; then + # https://github.com/mysql/mysql-server/blob/23032807537d8dd8ee4ec1c4d40f0633cd4e12f9/packaging/deb-in/extra/mysql-systemd-start#L81-L84 + echo 'Initializing certificates' + mysql_ssl_rsa_setup --datadir="$DATADIR" + echo 'Certificates initialized' + fi + "$@" --skip-networking --socket=/var/run/mysqld/mysqld.sock & pid="$!"