Denne oppgaven er mindre detaljert beskrevet enn vanlig, og introduserer en ny tjeneste vi vil jobbe med senere. Du skal selv finne ut av kommandoer, flagg og konfigurasjon basert på det du har lært i tidligere oppgaver og offisiell dokumentasjon.
- Bygge et container-image av en Spring Boot-applikasjon med Docker
- Publisere et image til et privat container-registry (Amazon ECR)
- Starte en tjeneste i Amazon ECS med Express mode fra et image
- Bli vant til å lese dokumentasjon fremfor steg-for-steg-oppskrifter
En fork er din egen kopi av et GitHub-repo, koblet tilbake til originalen. Du fork-er dette repoet slik at du får et sted å legge din egen kode og innleveringen din, uten å endre kildeprosjektet.
- Fork dette repoet til din egen GitHub-konto.
- Åpne forken i Codespaces.
- Legg Spring Boot-prosjektet ditt i rotmappen av forken.
- Amazon ECR (Elastic Container Registry) — privat registry for Docker-images. Her lagrer du imaget ditt slik at ECS kan hente det.
- Amazon ECS (Elastic Container Service) — Express mode — en forenklet måte å kjøre containere på ECS. Express mode setter opp cluster, task-definisjon, service, Application Load Balancer, target groups, security groups og auto-scaling for deg, slik at du kan gå fra et image i ECR til en offentlig URL uten å konfigurere hver komponent manuelt. Du betaler kun for de underliggende ressursene.
- Lag en enkel Spring Boot-applikasjon
- Containeriser den med Docker
- Publiser imaget til Amazon ECR
- Kjør imaget som en ECS-tjeneste i Express mode
- Du får et miljø med Docker om du lager et Codespace fra dette repoet
Bruk Spring Initializr til å generere et Maven-prosjekt med Java 21 og dependency-en Spring Web. Skriv en controller som returnerer en tekststreng på rotstien /. Test lokalt i Codespaces før du går videre.
Skriv en Dockerfile som bygger og kjører applikasjonen. Tenk på:
- Hvilket base-image passer for å bygge, og hvilket passer for å kjøre?
- Hvilken port lytter Spring Boot på som standard?
- Hvordan starter du jar-en?
Bygg imaget lokalt og verifiser at applikasjonen svarer.
Du trenger AWS CLI konfigurert med dine aksessnøkler og region eu-west-1. Deretter skal du:
- Opprette et ECR-repository
- Autentisere Docker mot ECR
- Tagge imaget med full ECR-URI
- Pushe imaget
Slå opp de nødvendige aws ecr- og docker-kommandoene selv.
Opprett en ECS-tjeneste fra ECR-imaget ditt via AWS Console ved å velge Express mode. Underveis skal du:
- Peke på ECR-imaget du nettopp pushet
- Angi containerporten som samsvarer med det Spring Boot lytter på
- La Express mode opprette load balancer og nettverk for deg
- Vente til tjenesten er
Runningog health-checks er grønne
Når tjenesten er oppe, får du en offentlig URL (via load balanceren) som du kan åpne i nettleseren.
Tips: Express mode kan også opprettes med Terraform via ressursen
aws_ecs_express_gateway_servicei AWS-provideren. Det er ikke nødvendig for denne oppgaven, men greit å vite til senere når vi går over til IaC.