zkt25/z3/prepare-app.sh
Andrii Pervashov d61f6c8c94 initial upload
2025-04-13 00:16:24 +02:00

88 lines
3.5 KiB
Bash

#!/bin/bash
RESOURCE_GROUP="expense-tracker-group"
LOCATION="northeurope"
ACR_NAME="expensetrackercr"
CONTAINER_APP_ENV="expense-tracker-env"
FRONTEND_APP_NAME="expense-tracker-frontend"
BACKEND_APP_NAME="expense-tracker-backend"
MONGO_URI="mongodb+srv://pervashovandrii:Y4gXPYacgMOwdoTD@cluster0.rtidc.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0"
echo "Registering Azure resource providers..."
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
az provider register --namespace Microsoft.ContainerRegistry
echo "Creating resource group..."
az group create --name $RESOURCE_GROUP --location $LOCATION
echo "Creating Azure Container Registry..."
az acr create --resource-group $RESOURCE_GROUP --name $ACR_NAME --sku Basic --admin-enabled true
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RESOURCE_GROUP --query loginServer --output tsv)
ACR_USERNAME=$(az acr credential show --name $ACR_NAME --resource-group $RESOURCE_GROUP --query username --output tsv)
ACR_PASSWORD=$(az acr credential show --name $ACR_NAME --resource-group $RESOURCE_GROUP --query passwords[0].value --output tsv)
if [ ! -d "../Backend" ] || [ ! -d "../Frontend" ]; then
echo "Error: Backend or Frontend directories not found in parent directory."
echo "Please make sure the directory structure is correct and run the script from sk1 directory."
exit 1
fi
echo "Creating Container App Environment..."
az containerapp env create --name $CONTAINER_APP_ENV --resource-group $RESOURCE_GROUP --location $LOCATION
echo "Building and pushing Docker images to ACR..."
az acr login --name $ACR_NAME
echo "Building and pushing Backend image..."
docker build -t ${ACR_LOGIN_SERVER}/backend:latest ../Backend
docker push ${ACR_LOGIN_SERVER}/backend:latest
echo "Building and pushing Frontend image..."
docker build -t ${ACR_LOGIN_SERVER}/frontend:latest -f ../Frontend/Dockerfile.temp ../Frontend
docker push ${ACR_LOGIN_SERVER}/frontend:latest
rm ../Frontend/Dockerfile.temp
mkdir -p ../Backend
echo "PORT=5000" > ../Backend/.env
echo "MONGO_URI=\"${MONGO_URI}\"" >> ../Backend/.env
echo "Creating Container App for Backend..."
az containerapp create \
--name $BACKEND_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $CONTAINER_APP_ENV \
--image ${ACR_LOGIN_SERVER}/backend:latest \
--registry-server $ACR_LOGIN_SERVER \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--env-vars "PORT=5000" "MONGO_URI=${MONGO_URI}" \
--target-port 5000 \
--ingress external \
--min-replicas 1 \
--max-replicas 3
BACKEND_URL=$(az containerapp show --name $BACKEND_APP_NAME --resource-group $RESOURCE_GROUP --query properties.configuration.ingress.fqdn -o tsv)
echo "Creating Container App for Frontend..."
az containerapp create \
--name $FRONTEND_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $CONTAINER_APP_ENV \
--image ${ACR_LOGIN_SERVER}/frontend:latest \
--registry-server $ACR_LOGIN_SERVER \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--env-vars "VITE_API_URL=https://${BACKEND_URL}" "NODE_ENV=development" \
--target-port 5173 \
--ingress external \
--min-replicas 1 \
--max-replicas 3
FRONTEND_URL=$(az containerapp show --name $FRONTEND_APP_NAME --resource-group $RESOURCE_GROUP --query properties.configuration.ingress.fqdn -o tsv)
echo "Application deployed successfully!"
echo "Frontend URL: https://${FRONTEND_URL}"
echo "Backend URL: https://${BACKEND_URL}"