docker/init/3.mysql.sh

55 lines
1.4 KiB
Bash
Executable File

source ../environment.sh
if [ -z "$NETWORK" ]; then
echo "错误: 未找到 NETWORK 环境变量"
exit 1
fi
if [ -z "$MYSQL_ROOT_PASSWORD" ]; then
echo "错误: 未找到 MYSQL_ROOT_PASSWORD 环境变量"
exit 1
fi
if [ -z "$MYSQL_PORT" ]; then
echo "错误: 未找到 MYSQL_PORT 环境变量"
exit 1
fi
rm -fr ./mysql-config
# 创建MySQL配置目录
mkdir -p ./mysql-config
# 创建MySQL配置文件
cat > ./mysql-config/my.cnf << EOF
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
EOF
if docker ps -a | grep -q ${MYSQL_NAME}; then
echo "停止并删除已存在的 MySQL 容器..."
docker stop ${MYSQL_NAME} >/dev/null 2>&1
docker rm ${MYSQL_NAME} >/dev/null 2>&1
fi
docker run -d \
--name ${MYSQL_NAME} \
--network $NETWORK \
-p ${MYSQL_PORT}:3306 \
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
-v ${MYSQL_DATA}:/var/lib/mysql \
-v $(pwd)/mysql-config/my.cnf:/etc/mysql/conf.d/my.cnf \
--env TZ=Asia/Shanghai \
--mount type=bind,source=/etc/localtime,target=/etc/localtime,readonly \
--memory ${MYSQL_MEMORY} \
--restart unless-stopped \
${MYSQL_IMAGE}
# 等待MySQL启动
echo "等待MySQL启动..."
sleep 10
# 验证SQL_MODE设置
docker exec ${MYSQL_NAME} mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "SELECT @@sql_mode;"
docker ps