Skip to content

cloudsteak/trn-node-docker-demo

Repository files navigation

NodeJS alapú webalkalmazás Azure-hoz

Támogatott NodeJS verziók

  • Node 16 LTS
  • Node 18 LTS
  • Node 20 LTS

Kapcsolódó projekt

Nem Docker verzió: https://github.com/cloudsteak/trn-node-demo

Docker alapok

docker-alapok.md

Megoldás

A megoldás "Embedded JavaScript templating"-re épül. https://ejs.co

https://ejs.co/#install

Teszt lépések

eslint tesztelés előkészítve. Ha CI pipeline-t telepítesz, akkor ellemőrzi a kódodban (példa alapján app.js) a pontosvesszők helyességét. A CD rész, csak akkor fut le, ha a CI (a teszt) sikeres.

Kézzel is futtatható a teszt:

npm run test

vagy

eslint ./app.js

Azure Pipeline létrehozás és kapcsolat GitHub-al

  1. Personal Acces Token létrehozás: https://github.com/settings/tokens
  2. "Generate new token (classic)"
    • Note: A token neve. Adj valami értelmezhető nevet. Pl.: AZPIPELINEPAT
    • Expiration: Token lejárati ideje. Tesztelés esetén választhatod a "No expiration". Éles rendszer esetén adj lejárati időt!!!
    • Az alábbi részeket válaszd ki a jelölönégyzeteknél
      • "repo": mindegyiket alatta
      • "admin:repo_hook": mindegyiket alatta
      • "user": mindegyiket alatta
  3. "Generate token" gombra kattintéssal a token létrejön.
  4. A tokent másold biztonságos helyre! Nem visszafejthető.
  5. Menj át az Azure DevOps-ba, a saját organization és project alapján. Pl.: https://cloudsteak.visualstudio.com/MentorKlub/_settings/adminservices (Project Settings > Service connections)
  6. "Create service connection"
  7. "New Azure service connection" résznél válaszd a GitHub-ot
  8. "New GitHub service connection" résznél az alábbi módon töltsd ki
    • "Personal Access Token Authentication"
    • "Personal access token" mezőbe illeszd be a GitHub-on generált token értékét
    • "Service connection name" mezőbe adj egy nevet. Pl.: GITADOCONN
    • Jelöld be a "Grant access permission to all pipelines" jelölő négyzetet
    • Kattints a "Verify and Save" gombra
  9. Menj a Pipeline részbe. Pl.: https://cloudsteak.visualstudio.com/MentorKlub/_build
  10. "Create Pipeline"
  11. GitHub (Yaml)
  12. Select lapon görgess a lapaljára és kattints az utolsó sorban a linkre: "You may also select a specific connection."
  13. Választd a "GITADOCONN"-t
  14. Keresd meg a GitHub repo-k között, amivel kapcsolódni szeretnél.
  15. Létező YAML esetén a Run gomb melletti nyilra kattins és válaszd a "Save" lehetőséget.
  16. Várd meg míg a pipeline létrejön. Ezzel a kapcsolt kész.
  17. Ha GitHub-on módosítasz a kódon, akkor a pipeline elindul és a benne lévő kód lefut.

NodeJs alkalmazás Docker-izálása

Dockerfile: leírja az alkalmazás környezet kialakításának feltételeit és lépéseit. .dockerignore: tartalmazza azon fájlok, mappák és minták lerását, amit a docker image készítő figyelmen kívül hagy.

Helyi "Build and run"

Helyi gépen hogyan tesztelhetem.

1. Image build

docker build --tag mentorklub.azurecr.io/trn-node-docker .

Megjegyzés:

  • Ha az image fájlt Apple Silicon processzoros gépen készítem, de utána Intel processzoros gépen használom, akkor a fenti parancshoz adjuk hozzá ezt: --platform linux/amd64
  • Több platformos build: docker buildx build --tag mentorklub.azurecr.io/trn-node-docker --push . --platform linux/amd64,linux/arm64,linux/arm/v7

2. Docker konténer létrehozás és futtatás

docker run -d -p 80:3000 --name nodedemo mentorklub.azurecr.io/trn-node-docker:latest

3. Eredmény tesztelése

http://localhost

Azure-ban futtatás

  1. Azure Container Registry létrehozás
# Erőforráscsoport létrehozás - ha szükséges
az group create --name mentorklub2023 --location northeurope

# ACR létrehozás
az acr create --resource-group mentorklub2023 --name mentorklub --sku Basic

# Admin engedlyezése
az acr update -n mentorklub --admin-enabled true
  1. Pipeline építés Azure DevOps-ban

  2. Pipeline azure-pipelines.yml fájl módosítás

Hogy csak a Push esetén fusson le. Illesszük be a condition: eq(variables['Build.reason'], 'IndividualCI') sort.

stages:
  - stage: Build
    displayName: Build and push stage
    condition: eq(variables['Build.reason'], 'IndividualCI')
    jobs:

A tag-ekhez tegyük be a latest értéket is.

containerRegistry: $(dockerRegistryServiceConnection)
tags: |
  $(tag)
  latest
  1. Webalkalmazás létrehozása (Docker)

  2. Webalkalmazás módosítása

    1. Üzembehelyezési központban állítsuk át a Folyamatos telepítés értékés Bekalcsolva-ra.
    2. Konfiguráció > Általános beállítások > Mindig bekapcsolva: Be

AKS

AKS-en való futtatáshoz itt találsz leírást: aks/readme.md

Hibakezelés

  1. Admin Account engedélyezése az ACR-ben

Ha frissen hoztunk létre egy Azure Container Registry-t, akkor az alapértelmezett beállítások miatt nem tudunk hozzáférni az ACR-hez.

Amikor megpróbálunk mégis hozzáférni webalkalmazásból, akkor a következő hibát kapjuk:

ACR hiba

Hiba megoldása, hogy engedélyezzük az Admin Account-ot az ACR-ben.

  1. Jelentkezzünk be az ACR-be:
az acr login --name mentorklub
  1. Engedélyezzük az Admin Account-ot:
az acr update -n mentorklub --admin-enabled true

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published