diff --git a/help/docker/Makefile b/help/docker/Makefile index dd4cd2a57..64782d8dc 100644 --- a/help/docker/Makefile +++ b/help/docker/Makefile @@ -158,10 +158,14 @@ clean-lock: # 清理 MySQL 数据 clean-mysql: @echo -e "$(YELLOW)清理 MySQL 数据...$(NC)" - @if [ -d "mysql/data" ] && [ -n "$(ls -A mysql/data 2>/dev/null)" ]; then \ + @if [ -d "mysql/data" ] && [ -n "$$(ls -A mysql/data 2>/dev/null)" ]; then \ rm -rf mysql/data/*; \ echo "已清空 MySQL 数据目录"; \ fi + @if [ -d "mysql/log" ] && [ -n "$$(ls -A mysql/log 2>/dev/null)" ]; then \ + rm -rf mysql/log/*; \ + echo "已清空 MySQL 日志目录"; \ + fi # 清理 runtime 缓存 clean-runtime: @@ -175,10 +179,10 @@ clean-runtime: set-permission: @echo -e "$(YELLOW)设置目录权限...$(NC)" @chmod -R 777 $(PHP_RUNTIME_LOCAL) 2>/dev/null || true - @chmod -R 777 $(PHP_APP_LOCAL)/public 2>/dev/null || true - @chmod 777 $(PHP_APP_LOCAL)/.env 2>/dev/null || true - @chmod 777 $(PHP_APP_LOCAL)/.version 2>/dev/null || true - @chmod 777 $(PHP_APP_LOCAL)/.constant 2>/dev/null || true + @chmod -R 777 $(PHP_APP_LOCAL)/public/uploads 2>/dev/null || true + @chmod 666 $(PHP_APP_LOCAL)/.env 2>/dev/null || true + @chmod 666 $(PHP_APP_LOCAL)/.version 2>/dev/null || true + @chmod 666 $(PHP_APP_LOCAL)/.constant 2>/dev/null || true # 清理网络 clean-network: @@ -239,8 +243,21 @@ delete: @echo -e "$(YELLOW)删除容器和数据...$(NC)" @$(COMPOSE_COMMAND) down -v @rm -rf $(MYSQL_DATA_LOCAL)/* 2>/dev/null || true + @rm -rf $(MYSQL_LOG_LOCAL)/* 2>/dev/null || true @rm -rf $(PHP_RUNTIME_LOCAL)/* 2>/dev/null || true @rm -f $(PHP_APP_LOCAL)/public/install.lock 2>/dev/null || true + @echo -e "$(YELLOW)还原文件权限...$(NC)" + @if [ -d "$(PHP_APP_LOCAL)/.git" ] || [ -d "$(PHP_APP_LOCAL)/../.git" ]; then \ + git -C $(PHP_APP_LOCAL) restore -SW . 2>/dev/null || true; \ + else \ + chmod 644 $(PHP_APP_LOCAL)/.env 2>/dev/null || true; \ + chmod 644 $(PHP_APP_LOCAL)/.version 2>/dev/null || true; \ + chmod 644 $(PHP_APP_LOCAL)/.constant 2>/dev/null || true; \ + find $(PHP_APP_LOCAL)/public/uploads -type d -exec chmod 755 {} \; 2>/dev/null || true; \ + find $(PHP_APP_LOCAL)/public/uploads -type f -exec chmod 644 {} \; 2>/dev/null || true; \ + find $(PHP_APP_LOCAL)/public/static -type d -exec chmod 755 {} \; 2>/dev/null || true; \ + find $(PHP_APP_LOCAL)/public/static -type f -exec chmod 644 {} \; 2>/dev/null || true; \ + fi @echo -e "$(GREEN)=== 已删除 ===$(NC)" # 查看日志 diff --git a/help/docker/run.sh b/help/docker/run.sh index 4b90e2428..755089e05 100644 --- a/help/docker/run.sh +++ b/help/docker/run.sh @@ -137,10 +137,12 @@ cleanup() { # 设置目录权限为 777 echo "设置目录权限..." [ -n "$PHP_RUNTIME_LOCAL" ] && chmod -R 777 "$PHP_RUNTIME_LOCAL" 2>/dev/null - [ -n "$PHP_APP_LOCAL" ] && chmod -R 777 "$PHP_APP_LOCAL/public" 2>/dev/null - [ -n "$PHP_APP_LOCAL" ] && chmod 777 "$PHP_APP_LOCAL/.env" 2>/dev/null - [ -n "$PHP_APP_LOCAL" ] && chmod 777 "$PHP_APP_LOCAL/.version" 2>/dev/null - [ -n "$PHP_APP_LOCAL" ] && chmod 777 "$PHP_APP_LOCAL/.constant" 2>/dev/null + # 只设置需要写入的 public 子目录权限 + [ -n "$PHP_APP_LOCAL" ] && chmod -R 777 "$PHP_APP_LOCAL/public/uploads" 2>/dev/null + # 配置文件设置为可写(不改变可执行位) + [ -n "$PHP_APP_LOCAL" ] && chmod 666 "$PHP_APP_LOCAL/.env" 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && chmod 666 "$PHP_APP_LOCAL/.version" 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && chmod 666 "$PHP_APP_LOCAL/.constant" 2>/dev/null } # 清理网络 @@ -217,8 +219,22 @@ do_delete() { echo -e "${YELLOW}=== 删除容器和数据 ===${NC}" docker-compose -f "$COMPOSE_FILE" down -v [ -n "$MYSQL_DATA_LOCAL" ] && rm -rf "$MYSQL_DATA_LOCAL"/* 2>/dev/null + [ -n "$MYSQL_LOG_LOCAL" ] && rm -rf "$MYSQL_LOG_LOCAL"/* 2>/dev/null [ -n "$PHP_RUNTIME_LOCAL" ] && rm -rf "$PHP_RUNTIME_LOCAL"/* 2>/dev/null [ -n "$PHP_APP_LOCAL" ] && rm -f "$PHP_APP_LOCAL/public/install.lock" 2>/dev/null + # 还原文件权限 + echo "还原文件权限..." + if [ -d "$PHP_APP_LOCAL/.git" ] || [ -d "$PHP_APP_LOCAL/../.git" ]; then + git -C "$PHP_APP_LOCAL" restore -SW . + else + [ -n "$PHP_APP_LOCAL" ] && chmod 644 "$PHP_APP_LOCAL/.env" 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && chmod 644 "$PHP_APP_LOCAL/.version" 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && chmod 644 "$PHP_APP_LOCAL/.constant" 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && find "$PHP_APP_LOCAL/public/uploads" -type d -exec chmod 755 {} \; 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && find "$PHP_APP_LOCAL/public/uploads" -type f -exec chmod 644 {} \; 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && find "$PHP_APP_LOCAL/public/static" -type d -exec chmod 755 {} \; 2>/dev/null + [ -n "$PHP_APP_LOCAL" ] && find "$PHP_APP_LOCAL/public/static" -type f -exec chmod 644 {} \; 2>/dev/null + fi echo -e "${GREEN}=== 已删除 ===${NC}" }