From 03337f347330c742789e5d7e667358d4675b9f45 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Mon, 13 Jun 2016 14:32:31 -0700 Subject: [PATCH] Add "mysql" --- mysql/Dockerfile | 5 +++++ mysql/docker-healthcheck | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 mysql/Dockerfile create mode 100755 mysql/docker-healthcheck diff --git a/mysql/Dockerfile b/mysql/Dockerfile new file mode 100644 index 0000000..43c4e9b --- /dev/null +++ b/mysql/Dockerfile @@ -0,0 +1,5 @@ +FROM mysql + +COPY docker-healthcheck /usr/local/bin/ + +HEALTHCHECK CMD ["docker-healthcheck"] diff --git a/mysql/docker-healthcheck b/mysql/docker-healthcheck new file mode 100755 index 0000000..9daa77f --- /dev/null +++ b/mysql/docker-healthcheck @@ -0,0 +1,27 @@ +#!/bin/bash +set -eo pipefail + +if [ "$MYSQL_RANDOM_ROOT_PASSWORD" ] && [ -z "$MYSQL_USER" ] && [ -z "$MYSQL_PASSWORD" ]; then + # there's no way we can guess what the random MySQL password was + echo >&2 'healthcheck error: cannot determine random root password (and MYSQL_USER and MYSQL_PASSWORD were not set)' + exit 0 +fi + +user="${MYSQL_USER:-root}" + +export MYSQL_PWD="${MYSQL_PASSWORD:-$MYSQL_ROOT_PASSWORD}" + +args=( + # force mysql to not use the local "mysqld.sock" (test "external" connectibility) + -h"$(hostname --ip-address || echo '127.0.0.1')" + -u"$user" + --silent +) + +if select="$(echo 'SELECT 1' | mysql "${args[@]}")" && [ "$select" = '1' ]; then + exit 0 +fi + +# If the probe returns 2 ("starting") when the container has already moved out of the "starting" state then it is treated as "unhealthy" instead. +# https://github.com/docker/docker/blob/dcc65376bac8e73bb5930fce4cddc2350bb7baa2/docs/reference/builder.md#healthcheck +exit 2