#!/bin/bash # Скрипт для перезапуска уже настроенного приложения # Использование: ./run.sh set -e # Включаем BuildKit для надёжного отслеживания изменений файлов export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # Проверка наличия .env файла (backend, web) if [ ! -f ".env" ]; then echo -e "${RED}❌ Файл .env не найден!${NC}" echo " Создайте файл .env на основе env.example" exit 1 fi # Загружаем переменные окружения export $(cat .env | grep -v '^#' | grep -v '^$' | xargs) # Значения по умолчанию DB_USER=${DB_USER:-playeng} DB_PASSWORD=${DB_PASSWORD:-playeng} DB_NAME=${DB_NAME:-playeng} DB_PORT=${DB_PORT:-5432} PORT=${PORT:-8080} WEB_PORT=${WEB_PORT:-3001} echo -e "${GREEN}🔄 Перезапуск Play Life...${NC}" echo "" # Проверяем, запущены ли контейнеры if docker-compose ps | grep -q "Up"; then echo -e "${YELLOW}Перезапуск существующих контейнеров...${NC}" echo " - Backend сервер (с пересборкой)" echo " - Frontend приложение (с пересборкой)" echo " - База данных" # Пересобираем и перезапускаем (BuildKit надёжно отслеживает изменения файлов) echo -e "${BLUE}Пересборка и перезапуск сервисов...${NC}" docker-compose up -d --build --force-recreate play-life-web backend # Перезапускаем базу данных docker-compose restart db echo -e "${GREEN}✅ Контейнеры перезапущены${NC}" else echo -e "${YELLOW}Запуск контейнеров...${NC}" echo " - База данных PostgreSQL 15 (порт: $DB_PORT)" echo " - Backend сервер (порт: $PORT)" echo " - Frontend приложение (порт: $WEB_PORT)" docker-compose up -d --build --force-recreate db backend play-life-web echo -e "${GREEN}✅ Контейнеры запущены${NC}" fi echo "" echo -e "${BLUE}📋 Статус сервисов:${NC}" docker-compose ps echo "" echo -e "${GREEN}✅ Готово!${NC}" echo "" echo -e "${BLUE}ℹ️ Используются креденшелы из .env:${NC}" echo " - DB_USER: $DB_USER" echo " - DB_NAME: $DB_NAME" echo " - DB_PORT: $DB_PORT (внешний порт)" echo " - Внутри Docker-сети: DB_HOST=db, DB_PORT=5432"