#!/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}"