mirvmon/docker/deploy.sh

89 lines
2.9 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
# 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 ""