42 lines
1.2 KiB
Bash
Executable File
42 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
CONTAINER="ewc2025-mysql"
|
|
IMAGE="mysql:8.4"
|
|
ROOT_PASSWORD="ewc2025root"
|
|
DATABASE="ewc2025"
|
|
PORT="13306"
|
|
|
|
RUNTIME="docker"
|
|
if [[ "${1:-}" == "--podman" ]]; then
|
|
RUNTIME="podman"
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SQL_DIR="$(cd "${SCRIPT_DIR}/../sql" && pwd)"
|
|
|
|
if ${RUNTIME} ps -a --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
|
|
echo "Container '${CONTAINER}' already exists — starting it."
|
|
${RUNTIME} start "${CONTAINER}"
|
|
else
|
|
echo "Creating and starting '${CONTAINER}' using ${RUNTIME}."
|
|
${RUNTIME} run -d \
|
|
--name "${CONTAINER}" \
|
|
-e MYSQL_ROOT_PASSWORD="${ROOT_PASSWORD}" \
|
|
-e MYSQL_DATABASE="${DATABASE}" \
|
|
-p "${PORT}:3306" \
|
|
-v "${CONTAINER}-data:/var/lib/mysql" \
|
|
-v "${SQL_DIR}/schema.sql:/docker-entrypoint-initdb.d/01_schema.sql:ro" \
|
|
"${IMAGE}"
|
|
fi
|
|
|
|
echo "Waiting for MySQL to be ready..."
|
|
until ${RUNTIME} exec "${CONTAINER}" mysqladmin ping -uroot -p"${ROOT_PASSWORD}" --silent 2>/dev/null; do
|
|
sleep 1
|
|
done
|
|
|
|
echo "MySQL 8.4 is up."
|
|
echo " Host: 127.0.0.1:${PORT}"
|
|
echo " Database: ${DATABASE}"
|
|
echo " User: root / ${ROOT_PASSWORD}"
|