Files
global_it24_landing/deploy-simple.sh

114 lines
3.4 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
# Проверка APP_HOST_IP
if [ -z "$APP_HOST_IP" ] || [ "$APP_HOST_IP" = "192.168.50.X" ]; then
echo "⚠️ Пожалуйста, укажите APP_HOST_IP в файле .env"
exit 1
fi
# Остановка предыдущей версии
echo "🛑 Остановка предыдущей версии..."
docker compose down 2>/dev/null || true
# Сборка с упрощенным Dockerfile
echo "⚡ Быстрая сборка с упрощенным Dockerfile (15-20 минут)..."
echo "💡 Используется Dockerfile.simple - проще и быстрее для первой сборки"
# Создаем временный 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:
- traefik-public
labels:
- "traefik.enable=true"
- "traefik.http.routers.global-it24.rule=Host(`${DOMAIN}`)"
- "traefik.http.services.global-it24.loadbalancer.server.port=3000"
depends_on:
- db
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:
- traefik-public
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data:
networks:
traefik-public:
external: true
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
# Удаляем временный файл
rm docker-compose.simple.yml
# Ожидание готовности
echo "⏳ Ожидание готовности сервиса..."
sleep 10
# Проверка статуса
if docker compose ps | grep -q "Up"; then
echo "✅ Развертывание успешно завершено!"
echo ""
echo "📊 Статус контейнера:"
docker compose ps
echo ""
echo "🌐 Сайт будет доступен по адресу: ${NEXT_PUBLIC_SITE_URL}"
echo ""
echo "📝 Для просмотра логов используйте: ./logs.sh"
else
echo "❌ Ошибка при запуске контейнера!"
echo "📝 Логи:"
docker compose logs
exit 1
fi