71 lines
3.4 KiB
Bash
71 lines
3.4 KiB
Bash
#!/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}"
|