Sdílet prostřednictvím


Nasazení vlastního kontejneru do App Service pomocí funkce GitHub Actions

GitHub Actions poskytuje flexibilitu při vytváření automatizovaného pracovního postupu vývoje softwaru. Pomocí akce Nasazení webu Azure můžete pracovní postup automatizovat a nasadit vlastní kontejnery do služby App Service pomocí GitHub Actions.

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 Aplikace Azure 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čený způsob ověřování pomocí služby Aplikace Azure Services pro GitHub Actions je s profilem publikování. Můžete se také ověřit pomocí instančního objektu nebo open ID Connect, ale proces vyžaduje další kroky.

Uložte přihlašovací údaje profilu publikování nebo instanční objekt jako tajný klíč GitHubu pro ověření v Azure. K tajnému kódu v rámci pracovního postupu se dostanete.

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. Na stránce Přehled vyberte Získat profil publikování.

    Poznámka:

    Od října 2020 budou webové aplikace pro Linux potřebovat nastavení WEBSITE_WEBDEPLOY_USE_SCM aplikace nastavené na true před stažením souboru. Tento požadavek bude v budoucnu odebrán. Informace o konfiguraci běžných nastavení webové aplikace najdete v tématu 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í > tajných kódů zabezpečení > a proměnných > Akce > Nový tajný klíč ú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žijete 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 dokumentu 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.

Sestavení image kontejneru

Následující příklad ukazuje část pracovního postupu, která vytvoří image Node.JS Dockeru. K přihlášení k privátnímu registru kontejneru použijte Docker 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 }}     

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: 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 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í
název aplikace (Povinné) Název aplikace App Service
publish-profile (Volitelné) Platí pro Web Apps (Windows a Linux) a Web App Containers(linux). Scénář s více kontejnery se nepodporuje. Obsah souboru profilu publikování (*.publishsettings) s tajnými kódy nasazení webu
název slotu (Volitelné) Zadejte jiný než produkční slot.
balíček (Volitelné) Platí jenom pro webovou aplikaci: Cesta k balíčku nebo složce. *.zip, *.war, *.jar nebo složku pro nasazení
obrazy (Povinné) Platí jenom pro Web App Containers: Zadejte plně kvalifikovaný název imagí kontejnerů. Například myregistry.azurecr.io/nginx:latest nebo python:3.7.2-alpine/. Pro vícekontenerovou aplikaci je možné zadat více názvů imagí kontejneru (oddělených více řádků).
konfigurační soubor (Volitelné) Platí jenom pro Web App Containers: 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ř. 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 }}'

Další kroky

Naši sadu akcí seskupených do různých úložišť najdete 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.