Skyskolen azure workshop 🚀
- azure-cli
brew update && brew install azure-cli
- Docker
- Java
brew search adoptopenjdk
- Velg java 11 eller høyere ->
brew install adoptopenjdk11
- Maven
brew install maven
- Node
- Sjekk at du kan logge inn på https://portal.azure.com med bekk mailen din, 2FA er påkrevd så du må godkjenne i authenticator appen
- Lag en resource group i terminalen :
(A resource group is a logical collection into which all Azure resources are deployed and managed)az group create --name myResourceGroup --location westeurope
- Lag en container registry :
azure Container Registry allows you to build, store, and manage container images and artifacts in a private registry for all types of container deployments.az acr create --resource-group myResourceGroup --name <acrName> --sku Basic
Du velger selv hvaacrName
skal være men den må være unik, prøv en kombo avditt navn + skyskolen
. Noter deg dittacrName
du kommer til å trenge det senere az acr update -n <acrName> --admin-enabled true
enable the admin user for an existing registry
- Lag en
Dockerfile
fil i roten avspring-boot-backend
mappen og lim inn følgende :
FROM maven:latest AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
WORKDIR /usr/src/app
RUN mvn clean install
FROM adoptopenjdk/openjdk11:alpine-jre
COPY --from=build /usr/src/app/target/spring-boot-backend-0.0.1-SNAPSHOT.jar /usr/app/spring-boot-backend-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/usr/app/spring-boot-backend-0.0.1-SNAPSHOT.jar"]
- Bygg dockerfilen du nettopp lagde ->
docker build -t [imageName] .
imageName kan for eks værespring-app
, du velger selv hva det skal være - Sjekk at det ble opprettet et docker image ->
docker images
- Kjør imaget med
docker run -d --rm -p 8989:8989 [imageName]
her eksponerer vi porten8989
utenfor containeren - Test at applikasjonen kjører, send et request til endepunktet som du finner i
AzureApplicationController
klassen - Tag imaget :
docker tag [imageName] [acrName].azurecr.io/[imageName]
-> Sjekk at taggen ble opprettet :docker images
- Push taggen til azure :
docker push [tagName]
Hvis du blir spurt om å logge inn kjør :az acr login --name [acrName]
- Lag en container instance, til det trenger vi dine azure container registry credentials
az acr credential show --name <acrName>
az container create --resource-group myResourceGroup --name spring-app --image tagName --dns-name-label spring-app --ports 8989
du velger selv hva--dns-name-label
skal være, her er den satt tilspring-app
den må være unik- Du kan nå teste at deployen gikk ok ved å sende et request til http://[dns-name-label].westeurope.azurecontainer.io:8989/azure-service/greeting
- Lag en
Dockerfile
fil i roten avreact-client
mappen og lim inn :
FROM node:14-alpine AS builder
WORKDIR /app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build
FROM nginx:1.19-alpine AS server
COPY ./etc/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder ./app/build /usr/share/nginx/html
- Prøv deg frem og lag en GET request som henter responsen fra backend servicen og viser det i react appen, du kan se hvilken ip og port backend servicen kjører på ved å kjøre
az container show --resource-group myResourceGroup --name spring-app --query "{ipAddress:ipAddress.ip,Port:ipAddress.ports[0].port}" --out table
- Bygg
Dockerfilen
på samme måte som du gjorde med backend, bare pass på å kalle imaget noe annet, for eksdocker build -t react-app .
- Kjør kontaineren og test at appen funker
- Du kan nå følge samme prosedyre som da vi deployet backend, bare pass på å erstatte
spring-app
med for eksreact-app
eller hva du enn velger å kalle appen, husk å teste kontaineren lokalt før du deployer til azure