89 lines
2.9 KiB
Bash
Executable File
89 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# deploy.sh — Быстрый разворот MirvMon на чистом сервере
|
||
# Использование: cd docker/ && bash deploy.sh
|
||
# Все файлы .env лежат в корне проекта (../.env)
|
||
|
||
set -e
|
||
|
||
echo "🚀 MirvMon — Deploy to new server"
|
||
echo ""
|
||
|
||
# ------------------------------------------
|
||
# 1. Проверяем Docker
|
||
# ------------------------------------------
|
||
if ! command -v docker &>/dev/null; then
|
||
echo "❌ Docker not installed. Installing..."
|
||
apt update -qq && apt install -y -qq docker.io docker-compose 2>/dev/null
|
||
echo "✅ Docker installed"
|
||
fi
|
||
|
||
DOCKER_COMPOSE_CMD="docker-compose"
|
||
if docker compose version &>/dev/null 2>&1; then
|
||
DOCKER_COMPOSE_CMD="docker compose"
|
||
fi
|
||
|
||
echo "✅ Docker: $(docker --version)"
|
||
echo "✅ Compose: $($DOCKER_COMPOSE_CMD version 2>/dev/null || echo 'v1')"
|
||
echo ""
|
||
|
||
# ------------------------------------------
|
||
# 2. Определяем пути
|
||
# ------------------------------------------
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||
ENV_FILE="$PROJECT_DIR/.env"
|
||
ENV_EXAMPLE="$SCRIPT_DIR/.env.example"
|
||
|
||
# ------------------------------------------
|
||
# 3. Создаём .env если нет
|
||
# ------------------------------------------
|
||
if [ ! -f "$ENV_FILE" ]; then
|
||
echo "📝 Creating .env from template..."
|
||
cp "$ENV_EXAMPLE" "$ENV_FILE"
|
||
|
||
# Генерируем случайные пароли
|
||
ROOT_PASS=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 20)
|
||
DB_PASS=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 20)
|
||
ADMIN_PASS=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 20)
|
||
|
||
sed -i "s/DB_ROOT_PASSWORD=.*/DB_ROOT_PASSWORD=${ROOT_PASS}/" "$ENV_FILE"
|
||
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASS}/" "$ENV_FILE"
|
||
|
||
echo "🔐 Generated random passwords:"
|
||
echo " DB root: $ROOT_PASS"
|
||
echo " DB user: $DB_PASS"
|
||
echo " Admin web: mirvmon2026 (по умолчанию, смени в настройках)"
|
||
echo ""
|
||
echo "⚠️ Save these! Change .env if you want custom passwords."
|
||
else
|
||
echo "✅ .env already exists"
|
||
fi
|
||
echo ""
|
||
|
||
# ------------------------------------------
|
||
# 4. Запускаем из директории проекта
|
||
# ------------------------------------------
|
||
echo "📦 Building and starting services..."
|
||
cd "$PROJECT_DIR"
|
||
$DOCKER_COMPOSE_CMD -f docker/docker-compose.yml up -d --build
|
||
|
||
echo ""
|
||
echo "⏳ Waiting for migrations..."
|
||
sleep 15
|
||
|
||
# Проверяем статус
|
||
$DOCKER_COMPOSE_CMD -f docker/docker-compose.yml ps
|
||
|
||
APP_PORT=$(grep APP_PORT "$ENV_FILE" | head -1 | cut -d= -f2)
|
||
|
||
echo ""
|
||
echo "✅ MirvMon is running!"
|
||
echo ""
|
||
echo "🌐 Web UI: http://localhost:${APP_PORT:-8080}"
|
||
echo "👤 Login: admin"
|
||
echo "🔑 Password: mirvmon2026"
|
||
echo ""
|
||
echo "📊 To check logs: $DOCKER_COMPOSE_CMD -f docker/docker-compose.yml logs -f app"
|
||
echo "🔧 To stop: $DOCKER_COMPOSE_CMD -f docker/docker-compose.yml down"
|
||
echo ""
|