#!/bin/bash # Простой скрипт развертывания с упрощенным Dockerfile # Использование: ./deploy-simple.sh set -e echo "🚀 Быстрое развертывание Global-IT24 (упрощенный режим)..." # Проверка наличия .env файла if [ ! -f .env ]; then echo "⚠️ Файл .env не найден. Создаю из .env.example..." cp .env.example .env echo "📝 Отредактируйте файл .env и запустите скрипт снова." exit 1 fi # Загрузка переменных окружения source .env # Остановка предыдущей версии echo "🛑 Остановка предыдущей версии..." docker compose down 2>/dev/null || true # Сборка с упрощенным Dockerfile echo "⚡ Быстрая сборка с упрощенным Dockerfile (15-20 минут)..." echo "💡 Используется Dockerfile.simple - проще и быстрее для первой сборки" # Создаём реальный yarn.lock (symlink не работает в Docker) if [ -L nextjs_space/yarn.lock ] && [ -e nextjs_space/yarn.lock ]; then # Валидный symlink - преобразуем в файл echo "🔗 Преобразуем symlink yarn.lock в реальный файл..." cp -L nextjs_space/yarn.lock nextjs_space/yarn.lock.tmp rm nextjs_space/yarn.lock mv nextjs_space/yarn.lock.tmp nextjs_space/yarn.lock echo "✅ yarn.lock преобразован в реальный файл" else # Битая symlink или файл отсутствует - удаляем и пропускаем if [ -L nextjs_space/yarn.lock ]; then echo "🗑️ Удаляем битую symlink на yarn.lock..." rm nextjs_space/yarn.lock fi echo "⚠️ yarn.lock будет создан при установке зависимостей" fi # Создаем временный docker-compose файл с Dockerfile.simple cat > docker-compose.simple.yml << 'EOFCOMPOSE' services: web: build: context: . dockerfile: Dockerfile.simple args: NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-http://localhost:3000} container_name: global_it24_web restart: unless-stopped env_file: - .env ports: - "3000:3000" networks: - app-network depends_on: db: condition: service_healthy db: image: postgres:15-alpine container_name: global_it24_db restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-global_it24} POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} volumes: - postgres_data:/var/lib/postgresql/data networks: - app-network healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: networks: app-network: driver: bridge EOFCOMPOSE # Сборка и запуск export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f docker-compose.simple.yml build docker compose -f docker-compose.simple.yml up -d # Ожидание готовности echo "⏳ Ожидание готовности сервиса..." sleep 10 # Проверка статуса if docker compose -f docker-compose.simple.yml ps | grep -q "Up"; then echo "✅ Развертывание успешно завершено!" echo "" echo "📊 Статус контейнеров:" docker compose -f docker-compose.simple.yml ps echo "" echo "🌐 Сайт доступен по адресу: http://localhost:3000" echo "🌐 Внешний доступ через Traefik: ${NEXT_PUBLIC_SITE_URL}" echo "" echo "📝 Для просмотра логов: docker compose -f docker-compose.simple.yml logs -f" echo "📝 Для остановки: docker compose -f docker-compose.simple.yml down" echo "" echo "⚠️ Не удаляйте файл docker-compose.simple.yml - он нужен для управления контейнерами!" else echo "❌ Ошибка при запуске контейнера!" echo "📝 Логи:" docker compose -f docker-compose.simple.yml logs exit 1 fi