#!/bin/bash set -e set -o pipefail [ -f .env ] && . .env for i in 1 2 3; do SERVICE="mysql$i" CONTAINER="${COMPOSE_PROJECT}-${SERVICE}-1" echo -n "Waiting for container '${CONTAINER}' ..." MAX_WAIT=120 COUNT=0 PASS_OPT="" while true; do if [ $COUNT -ge $MAX_WAIT ]; then echo " TIMEOUT"; docker logs "${CONTAINER}" | tail -n 20; exit 1; fi STATE=$(docker inspect -f '{{.State.Running}}' "${CONTAINER}" 2>/dev/null || echo "false") if [ "${STATE}" != "true" ]; then echo -e "\nERROR: Container ${CONTAINER} is NOT running!"; docker logs "${CONTAINER}" | tail -n 20; exit 1; fi # Try dynamic password first if docker exec "${CONTAINER}" mysql -h127.0.0.1 -uroot -p"${ROOT_PASSWORD}" -e "SELECT 1" >/dev/null 2>&1; then PASS_OPT="-p${ROOT_PASSWORD}" echo " OK (Auth: Dynamic)." break fi # Try default root password from image if docker exec "${CONTAINER}" mysql -h127.0.0.1 -uroot -proot -e "SELECT 1" >/dev/null 2>&1; then PASS_OPT="-proot" echo " OK (Auth: Default root)." break fi # Try empty password if docker exec "${CONTAINER}" mysql -h127.0.0.1 -uroot -e "SELECT 1" >/dev/null 2>&1; then PASS_OPT="" echo " OK (Auth: Empty)." break fi echo -n "."; sleep 2; COUNT=$((COUNT+2)) done if [ "$i" -eq 1 ]; then echo "Configuring master (mysql1)..." docker exec -i "${CONTAINER}" mysql -h127.0.0.1 -uroot ${PASS_OPT} <