You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DevOps-Bash-tools/mariadb.sh

94 lines
2.2 KiB
Bash

4 years ago
#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2020-08-05 19:49:48 +0100 (Wed, 05 Aug 2020)
#
# https://github.com/harisekhon/bash-tools
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/harisekhon
#
# https://hub.docker.com/_/mysql
set -euo pipefail
[ -n "${DEBUG:-}" ] && set -x
srcdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck disable=SC1090
. "$srcdir/lib/utils.sh"
# shellcheck disable=SC1090
. "$srcdir/lib/dbshell.sh"
4 years ago
# defined in lib/dbshell.sh
# shellcheck disable=SC2154
shell_description="$sql_mount_description
4 years ago
Source a sql script:
4 years ago
source mysql_info.sql
4 years ago
Get shell access:
\! bash
List available SQL scripts:
\! ls -l
"
# shellcheck disable=SC2034,SC2154
usage_description="
Boots a quick MariaDB docker container and drops you in to the 'mysql' shell
4 years ago
Multiple invocations of this script will connect to the same MariaDB container if already running
and the last invocation of this script to exit from the mysql shell will delete that container
Automatically creates shared bind mount points from host to container for convenience:
$shell_description
4 years ago
"
# used by usage() in lib/utils.sh
# shellcheck disable=SC2034
usage_args=""
help_usage "$@"
docker_image=mariadb
4 years ago
container_name=mariadb
version="${MARIADB_VERSION:-latest}"
4 years ago
password="${MYSQL_ROOT_PASSWORD:-${MYSQL_PWD:-${MYSQL_PASSWORD:-test}}}"
if ! docker ps -qf name="$container_name" | grep -q .; then
timestamp "booting MariaDB container from image '$docker_image:$version':"
# defined in lib/dbshell.sh
# shellcheck disable=SC2154
eval docker run -d \
--name "$container_name" \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD="$password" \
"$docker_sql_mount_switches" \
"$docker_image":"$version"
#-v "$srcdir/setup/mysql/conf.d/my.cnf:/etc/mysql/conf.d/" \
wait_for_mysql_ready "$container_name"
4 years ago
echo
fi
cat <<EOF
$shell_description
4 years ago
EOF
docker exec -ti -w /sql "$container_name" mysql -u root -p"$password"
docker_rm_when_last_connection "$0" "$container_name"