#!/bin/bash # build-fix.sh - Скрипт для исправления проблем сборки в Docker # Цвета для вывода GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}==================================================${NC}" echo -e "${BLUE} Проверка и исправление проблем сборки ${NC}" echo -e "${BLUE}==================================================${NC}" # Проверяем наличие Dockerfile if [ ! -f Dockerfile ]; then echo -e "${RED}ОШИБКА: Dockerfile не найден в текущей директории!${NC}" exit 1 fi # Проверяем команду сборки в package.json и Dockerfile echo -e "${YELLOW}Проверка конфигурации сборки...${NC}" # Проверка команды сборки в Dockerfile if grep -q "RUN npm run build" Dockerfile && ! grep -q "RUN npm run build:linux" Dockerfile; then echo -e "${YELLOW}Найдена проблема: Dockerfile использует 'npm run build', что не работает в контейнере Linux${NC}" echo -e "${BLUE}Исправление: заменяем на 'npm run build:linux'...${NC}" # Создаем резервную копию cp Dockerfile Dockerfile.bak # Заменяем команду sed -i "s/RUN npm run build/RUN npm run build:linux/g" Dockerfile echo -e "${GREEN}✅ Dockerfile обновлен. Резервная копия сохранена как Dockerfile.bak${NC}" else echo -e "${GREEN}✅ Dockerfile уже использует корректную команду сборки${NC}" fi # Проверка команды сборки в package.json if [ -f package.json ]; then if grep -q "\"build:linux\":" package.json; then echo -e "${GREEN}✅ В package.json уже определена команда build:linux${NC}" else echo -e "${YELLOW}В package.json отсутствует команда build:linux${NC}" echo -e "${BLUE}Добавляем команду build:linux...${NC}" # Создаем резервную копию cp package.json package.json.bak # Получаем текущую команду build build_cmd=$(grep -o '"build": "[^"]*"' package.json | sed 's/"build": "\(.*\)"/\1/') # Создаем версию для Linux, заменяя xcopy на cp -R linux_build_cmd=$(echo "$build_cmd" | sed 's/xcopy \/E \/I/cp -R/g' | sed 's/\\\\/\//g') # Добавляем команду build:linux, если она не существует if [[ "$linux_build_cmd" != "$build_cmd" ]]; then sed -i "/\"build\":/a \ \"build:linux\": \"${linux_build_cmd}\"," package.json echo -e "${GREEN}✅ Команда build:linux добавлена в package.json${NC}" fi fi else echo -e "${RED}ПРЕДУПРЕЖДЕНИЕ: package.json не найден в текущей директории!${NC}" fi echo -e "${BLUE}==================================================${NC}" echo -e "${GREEN}Проверка и исправление завершены!${NC}" echo -e "${BLUE}==================================================${NC}" echo -e "${YELLOW}Для применения изменений выполните: docker-compose build${NC}"