88 lines
3.5 KiB
Bash
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}"
|