112 lines
3.6 KiB
Bash
Executable File
112 lines
3.6 KiB
Bash
Executable File
#!/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:
|
||
- 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
|