Profile picture

[Shell Script] MySQL on docker (percona:5.7.30)

JaehyoJJAng2023년 05월 03일

◾️ 스크립트

컨테이너들을 실행하는 스크립트는 아래와 같다.

#!/usr/bin/bash

# server hostname
HOST="${HOSTNAME}"

# image version
IMAGE_VERSION='5.7.30'

# required path
DATA_PATH="/home/$HOST/mysql-on-docker/data"
CONF_PATH="/home/$HOST/mysql-on-docker/log"
LOG_PATH="/home/$HOST/mysql-on-docker/conf"

# container infos
containerNames=('db001' 'db002' 'db003')
Ports=(3306 3307 3308)

for idx in "${!containerNames[@]}"; do
    docker run -d -it --name "${containerNames[${idx}]}" -h "${containerNames[${idx}]}" -p "${Ports[${idx}]}":3306 \
      -v "${DATA_PATH}/${containerNames[${idx}]}:/var/lib/mysql" \
      -v "${CONF_PATH}/${containerNames[${idx}]}:/etc/percona-server.conf.d" \
      -v "${LOG_PATH}/${containerNames[${idx}]}:/var/log/mysql" \
      -e MYSQL_ROOT_PASSWORD=root \
      percona:"$IMAGE_VERSION"
done

생성된 컨테이너들을 삭제하는 스크립트는 아래와 같다.

#!/usr/bin/bash

containerIds=($(docker ps -a | grep -E "db001|db002|db003|" | grep -v 'CONTAINER ID' | awk '{print $1}'))
if [[ ! -z "${containerIds}" ]]; then
	docker kill $(docker ps -q) 2>/dev/null
	docker rm $(docker ps -a -q) 2>/dev/null
fi

Loading script...