|
|
@@ -49,6 +49,36 @@ echo " 开始部署..."
|
|
|
echo "=========================================="
|
|
|
echo ""
|
|
|
|
|
|
+
|
|
|
+echo "开始设置宿主机挂载目录权限..."
|
|
|
+# 定义需要授权的宿主机目录列表(根据你的 compose 挂载路径填写)
|
|
|
+MOUNT_DIRS=(
|
|
|
+ "./projects/www" # PHP 代码目录(对应容器 /var/www/html)
|
|
|
+ #"./mysql/data" # MySQL 数据目录
|
|
|
+ #"./mysql/conf" # MySQL 配置目录
|
|
|
+ "./mysql/init" # MySQL 初始化脚本目录
|
|
|
+ #"./redis/data" # redis 数据目录
|
|
|
+ #"./redis/conf/redis.conf" # redis 配置目录
|
|
|
+ #"./nginx/conf" # nginx 配置目录
|
|
|
+ #"./nginx/logs" # nginx 日志目录
|
|
|
+
|
|
|
+ # 其他容器的挂载目录(如有),按实际路径添加
|
|
|
+)
|
|
|
+
|
|
|
+# 循环给每个目录设置 777 权限
|
|
|
+for dir in "${MOUNT_DIRS[@]}"; do
|
|
|
+ # 检查目录是否存在,不存在则创建
|
|
|
+ if [ ! -d "$dir" ]; then
|
|
|
+ mkdir -p "$dir"
|
|
|
+ echo "创建目录:$dir"
|
|
|
+ fi
|
|
|
+ # 设置权限
|
|
|
+ chmod -R 777 "$dir"
|
|
|
+ echo "已授权目录:$dir(权限 777)"
|
|
|
+done
|
|
|
+echo "宿主机挂载目录授权完成..."
|
|
|
+
|
|
|
+
|
|
|
# 自动检测系统架构
|
|
|
ARCH=$(uname -m)
|
|
|
case "$ARCH" in
|
|
|
@@ -67,6 +97,7 @@ esac
|
|
|
echo -e "${GREEN}✓ 检测到系统架构: $ARCH ($ARCH_SUFFIX)${NC}"
|
|
|
echo ""
|
|
|
|
|
|
+
|
|
|
# 加载镜像
|
|
|
echo -e "${YELLOW}加载镜像...${NC}"
|
|
|
|
|
|
@@ -130,39 +161,43 @@ echo -e "${GREEN}等待 MySQL 启动完成...${NC}"
|
|
|
sleep 15
|
|
|
|
|
|
# 初始化 MySQL 数据库
|
|
|
-if [ -f "mysql-init.sql" ]; then
|
|
|
+if [ -f "./mysql/init/mysql-init.sql" ]; then
|
|
|
+ # echo ""
|
|
|
+ # echo -e "${YELLOW}执行 MySQL 初始化脚本...${NC}"
|
|
|
+
|
|
|
+ # # 等待 MySQL 完全就绪(兼容所有系统)
|
|
|
+ # COUNTER=0
|
|
|
+ # MAX_RETRIES=30
|
|
|
+ # while [ $COUNTER -lt $MAX_RETRIES ]; do
|
|
|
+ # if docker exec mysql mysqladmin ping -h localhost -uroot -pZskk@2025 --silent &> /dev/null; then
|
|
|
+ # echo ""
|
|
|
+ # echo -e "${GREEN}✓ MySQL 已就绪${NC}"
|
|
|
+ # break
|
|
|
+ # fi
|
|
|
+ # echo -n "."
|
|
|
+ # sleep 1
|
|
|
+ # COUNTER=$((COUNTER + 1))
|
|
|
+ # done
|
|
|
+
|
|
|
+ # if [ $COUNTER -eq $MAX_RETRIES ]; then
|
|
|
+ # echo ""
|
|
|
+ # echo -e "${RED}✗ MySQL 启动超时${NC}"
|
|
|
+ # exit 1
|
|
|
+ # fi
|
|
|
+ # echo ""
|
|
|
+
|
|
|
+ # # 执行初始化脚本
|
|
|
+ # docker exec -i mysql mysql -uroot -pZskk@2025 pacsonline < ./mysql/init/mysql-init.sql
|
|
|
+
|
|
|
+ # if [ $? -eq 0 ]; then
|
|
|
+ # echo -e "${GREEN}✓ MySQL 初始化完成${NC}"
|
|
|
+ # else
|
|
|
+ # echo -e "${RED}✗ MySQL 初始化失败${NC}"
|
|
|
+ # fi
|
|
|
+
|
|
|
echo ""
|
|
|
- echo -e "${YELLOW}执行 MySQL 初始化脚本...${NC}"
|
|
|
-
|
|
|
- # 等待 MySQL 完全就绪(兼容所有系统)
|
|
|
- COUNTER=0
|
|
|
- MAX_RETRIES=30
|
|
|
- while [ $COUNTER -lt $MAX_RETRIES ]; do
|
|
|
- if docker exec mysql8_deploy mysqladmin ping -h localhost -uroot -Zskk@2025 --silent &> /dev/null; then
|
|
|
- echo ""
|
|
|
- echo -e "${GREEN}✓ MySQL 已就绪${NC}"
|
|
|
- break
|
|
|
- fi
|
|
|
- echo -n "."
|
|
|
- sleep 1
|
|
|
- COUNTER=$((COUNTER + 1))
|
|
|
- done
|
|
|
-
|
|
|
- if [ $COUNTER -eq $MAX_RETRIES ]; then
|
|
|
- echo ""
|
|
|
- echo -e "${RED}✗ MySQL 启动超时${NC}"
|
|
|
- exit 1
|
|
|
- fi
|
|
|
+ echo -e "${GREEN}MySQL 将在首次启动时自动执行初始化脚本${NC}"
|
|
|
echo ""
|
|
|
-
|
|
|
- # 执行初始化脚本
|
|
|
- docker exec -i mysql8_deploy mysql -uroot -Zskk@2025 pacsonline < mysql-init.sql
|
|
|
-
|
|
|
- if [ $? -eq 0 ]; then
|
|
|
- echo -e "${GREEN}✓ MySQL 初始化完成${NC}"
|
|
|
- else
|
|
|
- echo -e "${RED}✗ MySQL 初始化失败${NC}"
|
|
|
- fi
|
|
|
else
|
|
|
echo -e "${YELLOW}未找到 mysql-init.sql 文件,跳过数据库初始化${NC}"
|
|
|
fi
|