setup/setup-alpine.sh
2025-12-03 16:52:20 +05:00

234 lines
8.3 KiB
Bash
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/sh
REG=git.sys.smsynergy.ru
VERSION=v0.0.1
. ./.env
echo $DOMAIN
set -e
echo "=========================================="
echo " Установка системы Panorama Analytics"
echo "=========================================="
echo ""
# Проверка наличия необходимых утилит
if ! command -v docker >/dev/null 2>&1; then
echo "Установка Docker..."
apk add --no-cache docker docker-compose
rc-update add docker boot
service docker start
sleep 2
fi
# Запрос DOMAIN
if [ -z "$DOMAIN" ]; then
echo -n "Введите домен для запуска системы Panorama Analytics (например: example.com): "
read DOMAIN
if [ -z "$DOMAIN" ]; then
echo "Ошибка: DOMAIN обязателен для продолжения"
exit 1
fi
else
echo "DOMAIN: $DOMAIN"
fi
# Запрос токена (для доступа к git registry)
if [ -z "$REG_USER" ]; then
echo -n "Введите логинт для доступа к git registry: "
read REG_USER
if [ -z "$REG_USER" ]; then
echo "Ошибка: логин обязателен для продолжения"
exit 1
fi
fi
if [ -z "$REG_PASS" ]; then
echo -n "Введите пароль для доступа к git registry: "
read REG_PASS
if [ -z "$REG_PASS" ]; then
echo "Ошибка: пароль обязателен для продолжения"
exit 1
fi
fi
echo ""
echo "Настройка окружения..."
# Создаем .env файл
cat > .env <<EOF
# --- Infrastructure
DOMAIN=${DOMAIN}
REG=git.sys.smsynergy.ru
REG_USER=${REG_USER}
REG_PASS=${REG_PASS}
# --- Databases
EOF
echo ".env файл создан"
# Логин в Docker registry
echo ""
echo "Авторизация в Docker registry..."
echo "$REG_PASS" | docker login $REG -u $REG_USER --password-stdin
if [ $? -ne 0 ]; then
echo "Ошибка: не удалось авторизоваться в Docker registry"
exit 1
fi
echo "Авторизация успешна"
# Скачивание docker-compose.yml
echo ""
echo "Скачивание docker-compose.yml версии ${VERSION}..."
# Пробуем скачать из git репозитория
# Пробуем разные варианты URL
DOWNLOADED=0
# Создаем базовую HTTP аутентификацию (Base64)
AUTH_BASE64=$(printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64 -w 0 2>/dev/null || printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64)
for COMPOSE_URL in \
"https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/src/tag/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/-/raw/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/-/blob/${VERSION}/dev/docker-compose.yml?format=raw"; do
echo "Попытка скачать: ${COMPOSE_URL}"
# Пробуем с базовой HTTP аутентификацией через заголовок (для BusyBox wget)
echo "Попытка с Basic Auth..."
if wget --header="Authorization: Basic ${AUTH_BASE64}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
# Проверяем, что это не HTML страница с ошибкой
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с URL: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
echo "Предупреждение: скачанный файл не похож на docker-compose.yml"
cat docker-compose.yml | head -5
rm -f docker-compose.yml
fi
fi
else
HTTP_CODE=$(grep -o "HTTP/[0-9.]* [0-9]*" /tmp/wget_output.log 2>/dev/null | tail -1 | awk '{print $2}' || echo "unknown")
if [ "$HTTP_CODE" != "unknown" ]; then
echo "HTTP код: ${HTTP_CODE}"
fi
if [ -f /tmp/wget_output.log ]; then
echo "Вывод wget:"
cat /tmp/wget_output.log | tail -3
fi
fi
# Пробуем с токеном в заголовке
echo "Попытка с токеном в заголовке..."
if wget --header="Authorization: token ${REG_PASS}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с токеном: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
# Пробуем с Bearer токеном
echo "Попытка с Bearer токеном..."
if wget --header="Authorization: Bearer ${REG_PASS}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с Bearer токеном: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
# Пробуем с URL содержащим credentials (для некоторых систем)
COMPOSE_URL_WITH_AUTH="https://${REG_USER}:${REG_PASS}@${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml"
if [ "$COMPOSE_URL" = "https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml" ]; then
echo "Попытка с credentials в URL..."
if wget -O docker-compose.yml "${COMPOSE_URL_WITH_AUTH}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с credentials в URL"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
fi
echo ""
done
if [ $DOWNLOADED -eq 0 ]; then
echo ""
echo "=========================================="
echo "ОШИБКА: не удалось скачать docker-compose.yml"
echo "=========================================="
echo "Проверьте:"
echo "1. Правильность версии: ${VERSION}"
echo "2. Доступность репозитория: ${REG}/cc/deploy"
echo "3. Правильность логина и пароля"
echo "4. Существование файла: dev/docker-compose.yml в указанной версии"
echo ""
echo "Попробуйте вручную:"
AUTH_B64=$(printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64 -w 0 2>/dev/null || printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64)
echo "wget --header=\"Authorization: Basic ${AUTH_B64}\" -O docker-compose.yml \"https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml\""
echo "или:"
echo "wget -O docker-compose.yml \"https://${REG_USER}:${REG_PASS}@${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml\""
exit 1
fi
# Проверка наличия docker-compose.yml
if [ ! -f "docker-compose.yml" ]; then
echo "Ошибка: docker-compose.yml не найден"
exit 1
fi
# Запуск docker-compose
echo ""
echo "Запуск контейнеров..."
docker-compose up -d
if [ $? -ne 0 ]; then
echo "Ошибка: не удалось запустить контейнеры"
exit 1
fi
# Ожидание запуска сервисов
echo ""
echo "Ожидание запуска сервисов..."
sleep 5
# Проверка статуса
echo ""
echo "Статус контейнеров:"
docker-compose ps
echo ""
echo "=========================================="
echo " Установка завершена!"
echo "=========================================="
echo ""
echo "Зайдите на http://sah.${DOMAIN} для продолжения"
echo ""