Обновить sk1/prepare-app.sh
This commit is contained in:
parent
3892692173
commit
e68876172c
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Скрипт для подготовки и развертывания приложения Brabus в Azure Cloud
|
||||
# Скрипт для подготовки и развертывания приложения
|
||||
|
||||
# Цвета для вывода
|
||||
GREEN='\033[0;32m'
|
||||
@ -10,48 +10,48 @@ NC='\033[0m' # No Color
|
||||
|
||||
# Проверяем, установлен ли Azure CLI
|
||||
if ! command -v az &> /dev/null; then
|
||||
echo -e "${RED}Azure CLI not isnstalled. install please first.${NC}"
|
||||
echo "instr: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli"
|
||||
echo -e "${RED}Azure CLI is not installed. Please install it before running the script.${NC}"
|
||||
echo "Instr: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверяем, авторизован ли пользователь в Azure
|
||||
echo -e "${YELLOW}Azure authorization check...${NC}"
|
||||
echo -e "${YELLOW}Checking authorization in Azure...${NC}"
|
||||
az account show > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${YELLOW}you need authorization in Azure. Log in process start...${NC}"
|
||||
echo -e "${YELLOW}Azure authorization required. Starting the sign-in process..${NC}"
|
||||
az login
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}authorization error Azure. exit.${NC}"
|
||||
echo -e "${RED}Azure Authorization Error. Exit.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Загружаем переменные окружения
|
||||
if [ -f .env ]; then
|
||||
echo -e "${GREEN}Load Variable environment files .env${NC}"
|
||||
echo -e "${GREEN}Loading environment variables from a file${NC}"
|
||||
export $(grep -v '^#' .env | xargs)
|
||||
else
|
||||
echo -e "${RED}file .env not found. please create it using .env.example${NC}"
|
||||
echo -e "${RED}File .env not found. Please create one based on .env.example${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверяем наличие нужных переменных
|
||||
if [[ -z "$AZURE_RESOURCE_GROUP" || -z "$AZURE_LOCATION" || -z "$AZURE_STORAGE_ACCOUNT" ]]; then
|
||||
echo -e "${RED}Not all conditions observe by .env${NC}"
|
||||
echo -e "${RED}Not all required environment variables are defined in the .env file.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Создаем группу ресурсов, если она не существует
|
||||
echo -e "${YELLOW}Creating resourse group ${AZURE_RESOURCE_GROUP}...${NC}"
|
||||
echo -e "${YELLOW}Создание группы ресурсов ${AZURE_RESOURCE_GROUP}...${NC}"
|
||||
az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
|
||||
|
||||
# Создаем реестр контейнеров, если он не существует
|
||||
echo -e "${YELLOW}Creating registry of containers...${NC}"
|
||||
echo -e "${YELLOW}Creating a container registry...${NC}"
|
||||
az acr create --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_REGISTRY --sku Basic --admin-enabled true
|
||||
|
||||
# Получаем учетные данные реестра
|
||||
echo -e "${YELLOW}Obtaining container registry credentials...${NC}"
|
||||
echo -e "${YELLOW}Getting container registry credentials...${NC}"
|
||||
REGISTRY_USERNAME=$(az acr credential show --name $AZURE_CONTAINER_REGISTRY --query "username" -o tsv)
|
||||
REGISTRY_PASSWORD=$(az acr credential show --name $AZURE_CONTAINER_REGISTRY --query "passwords[0].value" -o tsv)
|
||||
REGISTRY_URL=$(az acr show --name $AZURE_CONTAINER_REGISTRY --query "loginServer" -o tsv)
|
||||
@ -68,30 +68,33 @@ az storage account create \
|
||||
STORAGE_ACCOUNT_KEY=$(az storage account keys list --resource-group $AZURE_RESOURCE_GROUP --account-name $AZURE_STORAGE_ACCOUNT --query "[0].value" -o tsv)
|
||||
|
||||
# Создаем файловый ресурс для MongoDB
|
||||
echo -e "${YELLOW}Создание файлового ресурса для MongoDB...${NC}"
|
||||
echo -e "${YELLOW}Creating a File Resource for MongoDB...${NC}"
|
||||
az storage share create \
|
||||
--name mongodb-data \
|
||||
--account-name $AZURE_STORAGE_ACCOUNT \
|
||||
--account-key $STORAGE_ACCOUNT_KEY
|
||||
|
||||
# Создаем ключ хранилища для Azure Key Vault
|
||||
echo -e "${YELLOW}Создание Key Vault...${NC}"
|
||||
|
||||
echo -e "${YELLOW}Creating a Key Vault...${NC}"
|
||||
az keyvault create \
|
||||
--name $AZURE_KEY_VAULT_NAME \
|
||||
--resource-group $AZURE_RESOURCE_GROUP \
|
||||
--location $AZURE_LOCATION
|
||||
|
||||
# Генерируем секретный ключ JWT
|
||||
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Добавляем секреты в Key Vault
|
||||
echo -e "${YELLOW}Добавление секретов в Key Vault...${NC}"
|
||||
|
||||
echo -e "${YELLOW}Adding secrets to Key Vault...${NC}"
|
||||
az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "MONGODB-ROOT-USERNAME" --value $MONGODB_ROOT_USERNAME
|
||||
az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "MONGODB-ROOT-PASSWORD" --value $MONGODB_ROOT_PASSWORD
|
||||
az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name "JWT-SECRET" --value $JWT_SECRET
|
||||
|
||||
# Создаем директорию и копируем туда файлы для сборки Docker-образа
|
||||
echo -e "${YELLOW}Подготовка файлов для сборки Docker-образа...${NC}"
|
||||
echo -e "${YELLOW}Preparing files for building Docker image...${NC}"
|
||||
mkdir -p build
|
||||
cp -r src/* build/
|
||||
cp Dockerfile build/
|
||||
@ -102,30 +105,32 @@ echo -e "${YELLOW}Авторизация в реестре контейнеро
|
||||
az acr login --name $AZURE_CONTAINER_REGISTRY
|
||||
|
||||
# Сборка и публикация Docker-образа
|
||||
echo -e "${YELLOW}Сборка и публикация Docker-образа...${NC}"
|
||||
echo -e "${YELLOW}Authorization in the container registry...${NC}"
|
||||
cd build
|
||||
docker build -t ${REGISTRY_URL}/brabus-app:latest .
|
||||
docker push ${REGISTRY_URL}/brabus-app:latest
|
||||
cd ..
|
||||
|
||||
# Создаем переменные для развертывания
|
||||
|
||||
export AZURE_CONTAINER_REGISTRY_URL=$REGISTRY_URL
|
||||
export MONGODB_URI="mongodb://${MONGODB_ROOT_USERNAME}:${MONGODB_ROOT_PASSWORD}@mongodb:27017/brabus?authSource=admin"
|
||||
export STORAGE_ACCOUNT_NAME=$AZURE_STORAGE_ACCOUNT
|
||||
export STORAGE_ACCOUNT_KEY=$STORAGE_ACCOUNT_KEY
|
||||
|
||||
# Применяем шаблон развертывания
|
||||
echo -e "${YELLOW}Применение шаблона развертывания...${NC}"
|
||||
|
||||
echo -e "${YELLOW}Applying deployment template...${NC}"
|
||||
envsubst < azure_deployment.yml > azure_deployment_filled.yml
|
||||
az container create --resource-group $AZURE_RESOURCE_GROUP --file azure_deployment_filled.yml
|
||||
|
||||
# Получаем публичный IP-адрес контейнера
|
||||
|
||||
CONTAINER_IP=$(az container show --resource-group $AZURE_RESOURCE_GROUP --name brabus-container-group --query "ipAddress.ip" -o tsv)
|
||||
|
||||
# Настройка HTTPS с Let's Encrypt
|
||||
# Примечание: этот шаг требует дополнительной настройки DNS и доменного имени
|
||||
# Здесь приведен упрощенный пример
|
||||
|
||||
echo -e "${GREEN}Развертывание завершено успешно!${NC}"
|
||||
echo -e "${GREEN}Приложение доступно по адресу: http://${CONTAINER_IP}:3000${NC}"
|
||||
echo -e "${YELLOW}Примечание: для настройки HTTPS необходимо настроить доменное имя и SSL-сертификат${NC}"
|
||||
|
||||
echo -e "${GREEN}Deployment completed SUCCERFULLY!!!!${NC}"
|
||||
echo -e "${GREEN}The application is available AT: http://${CONTAINER_IP}:3000${NC}"
|
||||
echo -e "${YELLOW}Note: To configure HTTPS, you must configure a domain name and SSL certificate${NC}"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user