Files
global_it24_landing/deploy-simple.sh
2025-10-29 14:49:22 +00:00

123 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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