{"id":27155867,"url":"https://github.com/cloudsteak/trn-node-docker-demo","last_synced_at":"2025-09-08T00:03:09.118Z","repository":{"id":154164511,"uuid":"629419857","full_name":"cloudsteak/trn-node-docker-demo","owner":"cloudsteak","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-22T23:56:55.000Z","size":788,"stargazers_count":4,"open_issues_count":0,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-23T00:23:18.396Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"cloudsteak/trn-node-demo","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudsteak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-18T09:22:21.000Z","updated_at":"2025-03-22T23:56:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"72c898d3-72ec-4435-a7eb-794b5856c5f3","html_url":"https://github.com/cloudsteak/trn-node-docker-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-node-docker-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-node-docker-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-node-docker-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsteak%2Ftrn-node-docker-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudsteak","download_url":"https://codeload.github.com/cloudsteak/trn-node-docker-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247918923,"owners_count":21018044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-08T19:57:08.895Z","updated_at":"2025-04-08T19:57:09.461Z","avatar_url":"https://github.com/cloudsteak.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NodeJS alapú webalkalmazás Azure-hoz\n\n## Támogatott NodeJS verziók\n\n- Node 18 LTS\n- Node 20 LTS\n- Node 22 LTS\n\n## Kapcsolódó projekt\n\nNem Docker verzió: https://github.com/cloudsteak/trn-node-demo\n\n\n## Docker alapok\n\n[docker-alapok.md](./docs/docker-alapok.md)\n\n## Megoldás\n\nA megoldás \"Embedded JavaScript templating\"-re épül. https://ejs.co\n\nhttps://ejs.co/#install\n\n## Teszt lépések\n\n**[eslint](https://eslint.org/)** tesztelés előkészítve.\nHa 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.\n\nKézzel is futtatható a teszt:\n\n```bash\nnpm run test\n```\n\nvagy\n\n```bash\neslint ./app.js\n```\n\n## Azure Pipeline létrehozás és kapcsolat GitHub-al\n\n1. Personal Acces Token létrehozás: https://github.com/settings/tokens\n2. \"Generate new token (classic)\"\n   - Note: A token neve. Adj valami értelmezhető nevet. Pl.: AZPIPELINEPAT\n   - Expiration: Token lejárati ideje. Tesztelés esetén választhatod a \"No expiration\". Éles rendszer esetén adj lejárati időt!!!\n   - Az alábbi részeket válaszd ki a jelölönégyzeteknél\n     - \"repo\": mindegyiket alatta\n     - \"admin:repo_hook\": mindegyiket alatta\n     - \"user\": mindegyiket alatta\n3. \"Generate token\" gombra kattintéssal a token létrejön.\n4. A tokent másold biztonságos helyre! Nem visszafejthető.\n5. Menj át az Azure DevOps-ba, a saját organization és project alapján. Pl.: https://cloudsteak.visualstudio.com/MentorKlub/_settings/adminservices (Project Settings \u003e Service connections)\n6. \"Create service connection\"\n7. \"New Azure service connection\" résznél válaszd a GitHub-ot\n8. \"New GitHub service connection\" résznél az alábbi módon töltsd ki\n   - \"Personal Access Token Authentication\"\n   - \"Personal access token\" mezőbe illeszd be a GitHub-on generált token értékét\n   - \"Service connection name\" mezőbe adj egy nevet. Pl.: GITADOCONN\n   - Jelöld be a \"Grant access permission to all pipelines\" jelölő négyzetet\n   - Kattints a \"Verify and Save\" gombra\n9. Menj a Pipeline részbe. Pl.: https://cloudsteak.visualstudio.com/MentorKlub/_build\n10. \"Create Pipeline\"\n11. GitHub (Yaml)\n12. Select lapon görgess a lapaljára és kattints az utolsó sorban a linkre: \"You may also select a specific connection.\"\n13. Választd a \"GITADOCONN\"-t\n14. Keresd meg a GitHub repo-k között, amivel kapcsolódni szeretnél.\n15. Létező YAML esetén a Run gomb melletti nyilra kattins és válaszd a \"Save\" lehetőséget.\n16. Várd meg míg a pipeline létrejön. Ezzel a kapcsolt kész.\n17. Ha GitHub-on módosítasz a kódon, akkor a pipeline elindul és a benne lévő kód lefut.\n\n## NodeJs alkalmazás Docker-izálása\n\nDockerfile: leírja az alkalmazás környezet kialakításának feltételeit és lépéseit.\n.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.\n\n### Helyi \"Build and run\"\n\nHelyi gépen hogyan tesztelhetem.\n\n#### 1. Image build\n\n```bash\ndocker build --tag mentorklub.azurecr.io/trn-node-docker .\n```\n\nMegjegyzés: \n- 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`\n- Több platformos build: `docker buildx build --tag mentorklub.azurecr.io/trn-node-docker --push . --platform linux/amd64,linux/arm64,linux/arm/v7`\n#### 2. Docker konténer létrehozás és futtatás\n\n```bash\ndocker run -d -p 80:3000 --name nodedemo mentorklub.azurecr.io/trn-node-docker:latest\n```\n\n#### 3. Eredmény tesztelése\n\nhttp://localhost\n\n### Azure-ban futtatás\n\n1. Azure Container Registry létrehozás\n\n_Megjegyzés: Az ACR-nek Azure szinten egyedinek kell lennie. A lenti példában használt `mentorklub` ARC már létezik, így használj másikat, ha ezt is szeretnld kipróbálni._\n\n```bash\n# Erőforráscsoport létrehozás - ha szükséges\naz group create --name mentorklub --location swedencentral\n\n# ACR létrehozás\naz acr create --resource-group mentorklub --name mentorklub --sku Basic\n\n# Admin engedlyezése\naz acr update -n mentorklub --admin-enabled true\n```\n\n2. Pipeline építés Azure DevOps-ban\n  \n3. Pipeline azure-pipelines.yml fájl módosítás\n\nHogy csak a Push esetén fusson le. Illesszük be a `condition: eq(variables['Build.reason'], 'IndividualCI')` sort.\n\n```yaml\nstages:\n  - stage: Build\n    displayName: Build and push stage\n    condition: eq(variables['Build.reason'], 'IndividualCI')\n    jobs:\n```\n\nA tag-ekhez tegyük be a `latest` értéket is.\n\n```yaml\ncontainerRegistry: $(dockerRegistryServiceConnection)\ntags: |\n  $(tag)\n  latest\n```\n\n4. Webalkalmazás létrehozása (Docker)\n\n5. Webalkalmazás módosítása\n\n   1. Üzembehelyezési központban állítsuk át a `Folyamatos telepítés` értékés `Bekalcsolva`-ra.\n   2. Konfiguráció \u003e Általános beállítások \u003e Mindig bekapcsolva: Be\n\n\n\n## AKS\n\nAKS-en való futtatáshoz itt találsz leírást: [aks/readme.md](aks/readme.md)\n\n\n## Hibakezelés\n\n1. Admin Account engedélyezése az ACR-ben\n\nHa 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. \n\nAmikor megpróbálunk mégis hozzáférni webalkalmazásból, akkor a következő hibát kapjuk:\n\n![ACR hiba](docs/images/acr-admin-error.png)\n\nHiba megoldása, hogy engedélyezzük az Admin Account-ot az ACR-ben.\n\n1. Jelentkezzünk be az ACR-be:\n\n```bash\naz acr login --name mentorklub\n\n```\n\n2. Engedélyezzük az Admin Account-ot:\n\n```bash\naz acr update -n mentorklub --admin-enabled true\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsteak%2Ftrn-node-docker-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudsteak%2Ftrn-node-docker-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsteak%2Ftrn-node-docker-demo/lists"}