#!/bin/bash
nfs_ip="xx.xx.xx.xx"
nfs_dir="/data/nfs/"
# 数据库存放在nfs共享目录下的文件夹名称
data_dir="mysql_data"
# 数据库存放于nfs服务器的完整路径
nfs_mysql_data="${nfs_dir}/${data_dir}"
# 数据库配置
mysql_root_pwd="xxxxxx"
MYSQL_USER="test"
MYSQL_PASSWORD="test"
MYSQL_DATABASE"test"
# 镜像名
image="mysql:5.7.40-oracle"
# 卷名
volume_name="mysql_nfs"
# 容器名
container_name="mysql"
# 本地映射的端口号
port="3306"
# 创建文件夹
tmp_dir=$(mktemp -d)
mount -t nfs ${nfs_ip}:${nfs_dir} ${tmp_dir}
if [ $? != 0 ]; then
echo 'mount nfs server ERROR!'
exit 1
else
echo "mount ${nfs_ip}:${nfs_dir} succeeded!"
fi
dir="${tmp_dir}/${data_dir}"
if [ ! -d $dir ]; then
echo "mkdir ${data_dir}"
mkdir -p $dir
else
echo 'dir ${data_dir} exists, ignore mkdir'
fi
umount ${tmp_dir}
if [ $? == 0 ]; then
rm -r ${tmp_dir}
else
echo "umount ${tmp_dir} ERROR!"
exit 1
fi
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=${nfs_ip},nolock,rw,tcp \
--opt device=${nfs_ip}:${nfs_mysql_data} \
--name ${volume_name}
docker run -d --name ${container_name} \
-p ${port}:3306 \
-e MYSQL_ROOT_PASSWORD="${mysql_root_pwd}" \
-e MYSQL_USER={MYSQL_USER} \
-e MYSQL_PASSWORD=${MYSQL_PASSWORD} \
-e MYSQL_DATABASE=${MYSQL_DATABASE} \
-v ${volume_name}:/var/lib/mysql \
${image}