Nasazení vlastního kontejneru pro App Service pomocí akcí GitHubu

Akce GitHubu nabízí flexibilitu při vytváření automatizovaného pracovního postupu vývoje softwaru. Pomocí akce nasazení webu Azuremůžete automatizovat pracovní postup a nasadit vlastní kontejnery, které se App Service pomocí akcí GitHubu.

Pracovní postup je definovaný souborem YAML (. yml) v /.github/workflows/ cestě v úložišti. Tato definice obsahuje různé kroky a parametry, které jsou v pracovním postupu.

Pro pracovní postup kontejneru Azure App Service má soubor tři části:

Sekce Úlohy
Authentication 1. načtěte instanční objekt nebo publikační profil.
2. Vytvořte tajný klíč GitHubu.
Sestavení 1. Vytvořte prostředí.
2. Sestavte image kontejneru.
Nasazení 1. Nasaďte image kontejneru.

Požadavky

Generovat přihlašovací údaje nasazení

Doporučený způsob ověřování pomocí Azure App Services pro akce GitHubu je profil publikování. Můžete se také ověřit pomocí instančního objektu, ale proces vyžaduje více kroků.

Uložte přihlašovací údaje k publikačnímu profilu nebo instančnímu objektu jako tajný kód GitHubu pro ověření v Azure. V rámci pracovního postupu budete mít přístup ke tajnému kódu.

Profil publikování je přihlašovací údaje na úrovni aplikace. Nastavte svůj publikační profil jako tajný klíč GitHubu.

  1. V Azure Portal přejdete do služby App Service.

  2. Na stránce Přehled vyberte získat profil publikování.

    Poznámka

    Od října 2020 budou webové aplikace pro Linux potřebovat nastavení aplikace WEBSITE_WEBDEPLOY_USE_SCM nastavené na hodnotu true před stažením souboru. Tento požadavek se v budoucnu odebere. Informace o tom, jak nakonfigurovat běžné nastavení webové aplikace, najdete v tématu Konfigurace aplikace App Service v Azure Portal.

  3. Stažený soubor uložte. Pomocí obsahu souboru vytvoříte tajný klíč GitHubu.

Konfigurace tajného kódu GitHubu pro ověřování

V GitHubupřejděte do úložiště, vyberte Nastavení > tajných kódů > přidejte nový tajný kód.

Pokud chcete použít přihlašovací údaje na úrovni aplikace, vložte obsah staženého souboru publikačního profilu do pole hodnota tajného klíče. Pojmenujte tajný klíč AZURE_WEBAPP_PUBLISH_PROFILE .

Když nakonfigurujete pracovní postup GitHubu, použijte AZURE_WEBAPP_PUBLISH_PROFILE v akci nasazení webové aplikace Azure. Například:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

Konfigurace tajných kódů GitHubu pro váš registr

Definování tajných kódů pro použití s akcí přihlášení k Docker Příklad v tomto dokumentu používá Azure Container Registry pro Registry kontejneru.

  1. V Azure Portal nebo Docker klikněte na kontejner a zkopírujte uživatelské jméno a heslo. Azure Container Registry uživatelské jméno a heslo najdete v Azure Portal v části Nastavení > přístupových klíčů pro váš registr.

  2. Zadejte nový tajný klíč pro uživatelské jméno registru s názvem REGISTRY_USERNAME .

  3. Zadejte nový tajný klíč pro heslo registru s názvem REGISTRY_PASSWORD .

Sestavení image kontejneru

Následující příklad ukazuje část pracovního postupu, která vytváří Node.JS image Docker. K přihlášení do soukromého registru kontejneru použijte přihlašovací jméno Docker . V tomto příkladu se používá Azure Container Registry, ale stejná akce funguje i pro jiné Registry.

name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

Můžete také použít přihlášení Docker pro přihlášení k více registrům kontejnerů současně. Tento příklad obsahuje dva nové tajné kódy GitHubu pro ověřování pomocí docker.io. V příkladu se předpokládá, že existuje souboru Dockerfile na kořenové úrovni registru.

name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
    - uses: azure/docker-login@v1
      with:
        login-server: index.docker.io
        username: ${{ secrets.DOCKERIO_USERNAME }}
        password: ${{ secrets.DOCKERIO_PASSWORD }}
    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

Nasazení do kontejneru App Service

K nasazení image do vlastního kontejneru v App Service použijte azure/webapps-deploy@v2 akci. Tato akce má sedm parametrů:

Parametr Vysvětlení
název aplikace Požadovanou Název aplikace App Service
publikování – profil Volitelné Platí pro Web Apps (Windows a Linux) a kontejnery webové aplikace (Linux). Scénář vícenásobného kontejneru není podporován. Publikovat * obsah souboru profilu (. publishsettings) s nasazení webu tajnými klíči
název slotu Volitelné Zadejte jinou existující patici, než je produkční slot.
balíček Volitelné Platí jenom pro webovou aplikaci: cesta k balíčku nebo složce. *. zip, * . War, * . jar nebo složka, která se má nasadit
fotografií Požadovanou Platí jenom pro kontejnery webové aplikace: zadejte plně kvalifikované názvy imagí kontejneru. Například ' myregistry.azurecr.io/nginx:latest ' nebo ' Python: 3.7.2-Alpine/'. Pro aplikaci s více kontejnery je možné zadat více názvů imagí kontejneru (oddělené víceřádkově).
konfigurační soubor Volitelné Platí jenom pro kontejnery webové aplikace: cestu k souboru Docker-Compose. Musí být úplná cesta nebo relativní vzhledem k výchozímu pracovnímu adresáři. Vyžaduje se pro aplikace s více kontejnery.
spuštění – příkaz Volitelné Zadejte spouštěcí příkaz. Pro ex. spuštění dotnet nebo dotnet filename.dll
name: Linux Container Node Workflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - uses: azure/docker-login@v1
      with:
        login-server: mycontainer.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
        docker push mycontainer.azurecr.io/myapp:${{ github.sha }}     

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'myapp'
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
        images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'

Další kroky

Můžete najít naši sadu akcí seskupených do různých úložišť na GitHubu. Každá z nich obsahuje dokumentaci a příklady, které vám pomůžou používat GitHub pro CI/CD a nasazovat aplikace do Azure.