Sdílet prostřednictvím


Nasazení vlastního kontejneru do služby App Service pomocí GitHub Actions

Pomocí GitHub Actions můžete vytvořit automatizovaný pracovní postup vývoje softwaru. Pomocí akce Nasazení webu Azure můžete automatizovat pracovní postup a nasadit vlastní kontejnery do služby Azure App Service.

Pracovní postup je definován 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 služby App Service má soubor tři části:

Sekce Úlohy
Authentication 1. Načtení instančního objektu nebo profilu publikování
2. Vytvořte tajný kód GitHubu.
Sestavit 1. Vytvořte prostředí.
2. Sestavte image kontejneru.
Nasazení 1. Nasaďte image kontejneru.

Požadavky

Generování přihlašovacích údajů pro nasazení

Doporučujeme ověřit se pomocí Azure App Services pro GitHub Actions pomocí OpenID Connect. Můžete se také ověřit pomocí principálu služby nebo publikačního profilu.

Chcete-li provést ověření pomocí Azure, uložte přihlašovací údaje profilu publikování nebo service principalu jako tajný klíč GitHubu. K tajnému kódu v rámci pracovního postupu přistupujete.

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

  1. Na webu Azure Portal přejděte do služby App Service.

  2. V podokně Přehled vyberte Získat profil publikování.

    Poznámka:

    Od října 2020 musí uživatelé před WEBSITE_WEBDEPLOY_USE_SCM nastavit nastavení aplikace pro webové aplikace true pro Linux. Informace o konfiguraci běžných nastavení webové aplikace najdete v části Konfigurace aplikace App Service na webu Azure Portal.

  3. Uložte stažený soubor. Obsah souboru použijete k vytvoření tajného kódu GitHubu.

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

Na GitHubu přejděte do úložiště. Vyberte Nastavení>Zabezpečení>Tajné informace a proměnné>Akce>Nové tajemství úložiště.

Pokud chcete použít přihlašovací údaje na úrovni aplikace, vložte obsah staženého souboru profilu publikování do pole hodnoty tajného kódu. Pojmenujte tajný kód AZURE_WEBAPP_PUBLISH_PROFILE.

Při konfiguraci pracovního postupu GitHubu AZURE_WEBAPP_PUBLISH_PROFILE použijte tajný kód v akci nasazení Azure Web Appu. Příklad:

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

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

Definujte tajné kódy, které se mají použít s akcí Přihlášení k Dockeru. Příklad v tomto článku používá pro registr kontejneru službu Azure Container Registry.

  1. Přejděte do kontejneru na webu Azure Portal nebo Dockeru a zkopírujte uživatelské jméno a heslo. Uživatelské jméno a heslo služby Azure Container Registry najdete na webu Azure Portal v části Přístupové klíče nastavení>pro váš registr.

  2. Definujte nový tajný kód pro uživatelské jméno registru s názvem REGISTRY_USERNAME.

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

Sestavit obraz kontejneru

Následující příklad ukazuje část pracovního postupu, která vytvoří image Node.js Dockeru. Přihlaste se k privátnímu registru kontejneru pomocí dockeru Login . Tento příklad používá Službu Azure Container Registry, ale stejná akce funguje i pro ostatní 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 }}     

K přihlášení k několika registrům kontejnerů můžete použít také přihlášení Dockeru najednou. Tento příklad obsahuje dva nové tajné kódy GitHubu pro ověřování pomocí docker.io. Příklad předpokládá, že existuje soubor 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 }}     

Následující příklad ukazuje část pracovního postupu, který sestaví image Dockeru pro Windows. Přihlaste se k privátnímu registru kontejneru pomocí dockeru Login . Tento příklad používá Službu Azure Container Registry, ale stejná akce funguje i pro ostatní registry.

name: Windows Container Workflow
on: [push]
jobs:
  build:
    runs-on: windows-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 }}     

Přihlášení k Dockeru můžete použít také k přihlášení k více registrům kontejnerů najednou. Tento příklad obsahuje dva nové tajné kódy GitHubu pro ověřování pomocí docker.io. Příklad předpokládá, že existuje soubor Dockerfile na kořenové úrovni registru.

name: Windows Container Workflow
on: [push]
jobs:
  build:
    runs-on: windows-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 služby App Service

Pokud chcete nasadit image do vlastního kontejneru ve službě App Service, použijte azure/webapps-deploy@v2 tuto akci. Tato akce má sedm parametrů:

Parametr Vysvětlení
app-name (Povinné) Název aplikace App Service
publish-profile (Volitelné) Používá se s webovými aplikacemi (Windows a Linux) a kontejnery webových aplikací (Linux). Scénář s více kontejnery se nepodporuje. Publikujte obsah souboru profilu \*.publishsettings s tajnými klíči Web Deploy.
slot-name (Optional) Zadejte existující slot jiný než produkční slot.
package (Volitelné) Používá se jenom u webových aplikací: Cesta k balíčku nebo složce. \*.zip, \*.war, \*.jar nebo složku, která se má nasadit.
images (Povinné) Používá se jenom s kontejnery webových aplikací: Zadejte plně kvalifikovaný název image kontejneru. Například myregistry.azurecr.io/nginx:latest nebo python:3.12.12-alpine/. Pro vícekontenerovou aplikaci lze zadat více názvů obrazů kontejnerů (oddělené víceřádkově).
configuration-file (Volitelné) Používá se jenom s kontejnery webových aplikací: Cesta k souboru Docker Compose. Měla by být plně kvalifikovaná cesta nebo relativní vzhledem k výchozímu pracovnímu adresáři. Vyžaduje se pro vícekontenerové aplikace.
startup-command (Volitelné) Zadejte spouštěcí příkaz. Například: dotnet run 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 }}'
name: Windows_Container_Workflow

on: [push]

jobs:
  build:
    runs-on: windows-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 }}'

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