Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje podporu, kterou Azure Functions poskytuje pro kontejnerizované aplikační funkce, které běží v prostředí Azure Container Apps. Další informace najdete v hostování Azure Functions pomocí Azure Container Apps.
Important
Nyní je k dispozici nová metoda hostování pro spuštění Azure Functions přímo v Azure Container Apps. Podívejte se na podporu nativních funkcí Azure v aplikacích Azure Container. Tato integrace umožňuje používat všechny funkce a možnosti Azure Container Apps. Můžete také využít programovací model funkcí a jednoduchost automatického škálování poskytovaného Azure Functions.
Tento přístup doporučujeme pro většinu nových úloh. Další informace najdete v tématu Azure Functions na Azure Container Apps.
Tento článek ukazuje podporu, kterou Azure Functions poskytuje aplikacím funkcí, které běží v kontejnerech Linuxu.
V horní části tohoto článku zvolte hostitelské prostředí pro vaši kontejnerizovanou aplikaci funkcí.
Pokud chcete rovnou přejít, v následujícím článku se dozvíte, jak vytvořit první funkci v kontejneru Linuxu a nasadit image z registru kontejneru do podporované Azure hostitelské služby:
Vytvořte své první kontejnerizované Azure Functions na Azure Container Apps
Další informace o nasazeních do Azure Container Apps najdete v tématu hostování Azure Functions v rámci Azure Container Apps.
Important
Tento článek aktuálně ukazuje, jak se připojit k výchozímu účtu storage pomocí connection string. Pro zajištění nejlepšího zabezpečení místo toho vytvořte připojení založené na spravované identitě k Azure Storage pomocí ověřování Microsoft Entra. Další informace najdete v tématu Připojení.
Vytváření kontejnerizovaných aplikací funkcí
Funkce usnadňují nasazení a spouštění aplikací funkcí jako linuxových kontejnerů, které vytváříte a udržujete. Funkce udržuje sadu základních imagí specifických pro jazyk , které můžete použít při vytváření kontejnerizovaných aplikací funkcí.
Important
Když vytváříte vlastní kontejnery, musíte zachovat základní image kontejneru aktualizovanou na nejnovější podporovanou základní image. Podporované základní image pro Azure Functions jsou specifické pro jazyk. Viz základní obrazy repozitářů Azure Functions.
Tým Functions se zavazuje publikovat měsíční aktualizace těchto základních imagí. Pravidelné aktualizace zahrnují nejnovější aktualizace menších verzí a opravy zabezpečení jak pro prostředí Functions runtime, tak pro jazyky. Kontejner byste měli pravidelně aktualizovat z nejnovější základní image a znovu nasadit aktualizovanou verzi kontejneru. Pro více informací, viz Údržba vlastních kontejnerů.
Úplný příklad vytvoření místní kontejnerizované aplikace funkcí z příkazového řádku a publikování image do registru kontejneru najdete v tématu Vytvoření aplikace funkcí v místním kontejneru Linuxu.
Vygenerování souboru Dockerfile
Nástroje pro funkce poskytují možnost Dockeru, která generuje soubor Dockerfile s vaším projektem kódu funkcí. Tento soubor s Dockerem můžete použít k vytvoření funkcí v kontejneru, který je odvozen od správné základní image, která zahrnuje jazyk a verzi.
Způsob vytvoření souboru Dockerfile závisí na tom, jak vytvoříte project.
Při vytváření Functions projektu pomocí nástrojů Azure Functions Core Tools zahrňte při spuštění příkazu
--dockermožnostfunc init, jak je znázorněno v následujícím příkladu:func init --dockerSoubor Dockerfile můžete také přidat do existujícího project pomocí možnosti
--docker-onlypři spuštění příkazufunc initve stávající složce project, jak je znázorněno v následujícím příkladu:func init --docker-only
Úplný příklad najdete v tématu Vytvoření aplikace funkcí v místním kontejneru Linuxu.
Vytvoření vlastního souboru Dockerfile
Místo použití vygenerovaného souboru Dockerfile můžete ho vytvořit ručně, pokud potřebujete větší kontrolu nad imagí kontejneru. Složka vlastního kontejneru úložiště azure-functions-docker poskytuje tyto šablony, které vám pomůžou začít:
| Template | Description |
|---|---|
| template.Dockerfile | Komentář s podrobným průvodcem pro vytvoření vlastního kontejneru Obsahuje pokyny pro více prostředí runtime (Java, izolované rozhraní .NET, Node.js, PowerShell, Python), volitelnou instalaci certifikátu CA, spuštění jako uživatel bez oprávnění root a povolení ladění pomocí SSH pro Kudu. |
| sample.Dockerfile | Příklad připravený k použití vytvořený ze šablony, který vytvoří kontejner Azure Functions založený na Javě s povoleným protokolem SSH pro ladění Kudu. |
Vytvoření aplikace funkcí v kontejneru
Pomocí Dockerfile vygenerovaného pomocí Azure Functions ve vašem projektovém kódu můžete pomocí Dockeru vytvořit aplikaci Azure Functions v kontejneru na místním počítači. Následující příkaz docker build vytvoří image kontejnerizovaných funkcí z project v místním adresáři:
docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .
Příklad vytvoření kontejneru najdete v tématu Sestavení image kontejneru a místní ověření.
Aktualizace image v registru
Když provedete změny v projektu kódu funkcí nebo potřebujete aktualizovat na nejnovější základní obraz, znovu sestavte kontejner místně. Znovu publikujte aktualizovanou image do zvoleného registru kontejneru. Následující příkaz znovu sestaví image z kořenové složky s aktualizovaným číslem verze a odešle ji do registru:
az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .
Nahraďte <REGISTRY_NAME> instanci služby Container Registry a <LOGIN_SERVER> názvem přihlašovacího serveru.
Aktualizujte existující nasazení tak, aby používalo novou image. Aplikaci funkcí můžete aktualizovat tak, aby používala novou image buď pomocí Azure CLI, nebo v Azure portal:
az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
V tomto příkladu <IMAGE_NAME> je úplný název nové image s verzí. Soukromé registry vyžadují, abyste zadali uživatelské jméno a heslo. Bezpečně uložte tyto přihlašovací údaje.
Měli byste také zvážit povolování průběžného nasazování.
Vytvoření kontejnerizované aplikace funkcí pomocí Azure portal
Když vytvoříte aplikaci funkcí v Azure portal, můžete aplikaci funkcí nasadit z image v registru kontejneru. Informace o tom, jak vytvořit kontejnerizovanou aplikaci funkcí v registru kontejneru, najdete v tématu Vytvoření aplikace funkcí v kontejneru.
Následující kroky vytvoří a nasadí existující kontejnerizovanou aplikaci funkcí z registru kontejneru.
V nabídce Azure portal nebo na stránce Home vyberte Vytvořit prostředek.
Na stránce Nový vyberte Web>Function App.
V části Vybrat možnost hostování zvolte Functions Premium>Select.
Tato akce vytvoří aplikaci funkcí hostované Azure Functions v plánu Premium, která podporuje dynamické škálování. Můžete se také rozhodnout pro spuštění v rámci plánu App Service, ale v tomto druhu vyhrazeného plánu musíte spravovat škálování vaší funkční aplikace.
Na stránce Základy použijte nastavení aplikace funkcí, jak je uvedeno v následující tabulce:
Setting Navrhovaná hodnota Description Subscription Vaše předplatné Předplatné, ve kterém vytvoříte funkční aplikaci. Zdrojová skupina myResourceGroup Název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí. Skupinu prostředků byste měli vytvořit, protože při vytváření nových aplikací funkcí v existující skupině prostředků existují známá omezení. Název aplikace Function Název aplikace Název identifikující novou aplikaci funkcí. Platné znaky jsou a-z(bez rozlišování malých a velkých písmen),0-9a-.Zabezpečení jedinečného výchozího názvu hostitele Enabled Tuto funkci povolte, abyste se nemuseli starat o kolize názvů domén bez ohledu na název vaší aplikace. Chcete nasadit kód nebo image kontejneru? Image kontejneru Nasaďte kontejnerizovanou aplikaci funkcí z registru. Pokud chcete vytvořit aplikaci funkcí v registru, přečtěte si téma Vytvoření aplikace funkcí v místním kontejneru Linuxu. Region Upřednostňovaná oblast Vyberte region, který je blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce můžou přistupovat. Plán Linuxu Nový plán (výchozí) Vytvoří nový plán Premium pro hostování vaší aplikace. Můžete také zvolit existující plán Premium. Cenový plán Elastic Premium EP1 EP1je cenově dostupný plán. Pokud potřebujete, můžete zvolit větší plán.Zónová redundance Disabled Tuto funkci nepotřebujete v neprodukční aplikaci. Přijměte výchozí možnosti vytvoření nového účtu storage na kartě Storage a na kartě Monitoring novou instanci Application Insight. Můžete také použít existující účet storage nebo instanci Application Insights.
Výběrem možnosti Přezkoumat + vytvořit zkontrolujte vybrané možnosti konfigurace aplikace.
Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a pak vyberte Vytvořit , abyste aplikaci funkcí zřídili pomocí výchozí základní image.
Po vytvoření prostředku aplikace funkcí vyberte Přejít k prostředku. Na stránce aplikace funkcí vyberte Deployment Center.
V Centru nasazení můžete jako zdroj image připojit registr kontejneru. Můžete také povolit GitHub Actions nebo Azure Pipelines pro robustnější průběžné nasazování aktualizací do kontejneru v registru.
Vytvoření kontejnerizované aplikace funkcí pomocí Azure portal
Když v Azure portal vytvoříte aplikaci funkcí hostované v Container Apps, můžete aplikaci funkcí nasadit z image v registru kontejneru. Informace o tom, jak vytvořit kontejnerizovanou aplikaci funkcí v registru kontejneru, najdete v tématu Vytvoření aplikace funkcí v kontejneru.
Následující kroky vytvoří a nasadí existující kontejnerizovanou aplikaci funkcí z registru kontejneru.
V nabídce Azure portal nebo na stránce Home vyberte Vytvořit prostředek.
Na stránce Nový vyberte Web>Function App.
V části Vybrat možnost hostování zvolte prostředí aplikací Container>Vybrat.
Na stránce Základy použijte nastavení aplikace funkcí, jak je uvedeno v následující tabulce:
Setting Navrhovaná hodnota Description Subscription Vaše předplatné Předplatné, ve kterém vytvoříte funkční aplikaci. Zdrojová skupina myResourceGroup Název nové skupiny prostředků, ve které vytvoříte aplikaci funkcí. Skupinu prostředků byste měli vytvořit, protože při vytváření nových aplikací funkcí v existující skupině prostředků existují známá omezení. Název aplikace Function Jedinečný název* Název identifikující novou aplikaci funkcí. Platné znaky jsou a-z(bez rozlišování malých a velkých písmen),0-9a-.Region Upřednostňovaná oblast Vyberte region, který je blízko vás nebo v blízkosti jiných služeb, ke kterým vaše funkce můžou přistupovat. *Název aplikace musí být jedinečný v rámci Azure Container Apps prostředí.
Na stránce Basics přijměte navrhované nové prostředí pro Azure Container Apps. Aby se minimalizovaly náklady, vytvoří se nové výchozí prostředí ve službě Consumption + Dedicated s výchozím profilem úlohy a bez redundance zóny. Další informace najdete v hostování Azure Functions pomocí Azure Container Apps.
Můžete také použít existující prostředí Container Apps. Pokud chcete vytvořit vlastní prostředí, vyberte Vytvořit nové. Na stránce Vytvořit prostředí Container Apps můžete přidat nedefaultní profily úloh nebo povolit redundanci zón. Chcete-li se dozvědět více o prostředích, podívejte se na prostředí Azure Container Apps.
Vyberte kartu Kontejner a zrušte výběr možnosti Použít image rychlého startu. Jinak je funkční aplikace nasazena ze základního image pro vámi zvolený jazyk funkční aplikace.
Zvolte typ image, veřejný nebo soukromý. Pokud používáte Azure Container Registry nebo jiný privátní registr, zvolte Privátní. Zadejte název image včetně předpony registru. Pokud používáte privátní registr, zadejte přihlašovací údaje pro ověřování registru image. Nastavení Public podporuje jenom obrázky uložené veřejně v Docker Hub.
V části Přidělení prostředků kontejneru vyberte požadovaný počet jader procesoru a dostupnou paměť. Pokud má vaše prostředí přidané další profily úloh, můžete vybrat nedefaultní profil úlohy. Možnosti na této stránce ovlivňují náklady na hostování vaší aplikace. Pokud chcete odhadnout potenciální náklady, podívejte se na stránku Container Apps - ceny.
Výběrem možnosti Přezkoumat + vytvořit zkontrolujte vybrané možnosti konfigurace aplikace.
Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a poté vyberte Vytvořit, abyste nasadili aplikační funkci a image kontejneru z registru.
Práce s obrázky v Azure Functions
Když je kontejner vaší funkční aplikace nasazený z registru, služba Functions uchovává informace o zdrojovém image.
K získání dat o obrazu nebo změně nasazovacího obrazu použijte následující příkazy:
az functionapp config container show: vrátí informace týkající se obrazu použitého k nasazení.az functionapp config container set: Změňte nastavení registru nebo aktualizujte image použitou k nasazení, jak je znázorněno v předchozím příkladu.
Použití profilů úloh Container Apps
Profily úloh jsou funkce Container Apps, které vám umožňují lépe řídit prostředky nasazení. Azure Functions na Azure Container Apps také podporuje profily úloh. Další informace najdete v tématu Workload profiles in Azure Container Apps.
Můžete také nastavit množství prostředků procesoru a paměti přidělených vaší aplikaci.
Profily úloh a přidělení prostředků můžete vytvářet a spravovat pomocí Azure CLI nebo v Azure portal.
Profily úloh povolíte při vytváření prostředí kontejnerové aplikace. Příklad najdete v tématu Vytvoření aplikace kontejneru v profilu.
Profily můžete přidávat, upravovat a odstraňovat ve svém prostředí. Příklad najdete v tématu Přidání profilů.
Když vytvoříte kontejnerizovanou aplikaci funkcí v prostředí s povolenými profily úloh, měli byste také zadat profil, ve kterém se má spustit. Pomocí parametru --workload-profile-name příkazu az functionapp create zadejte profil, například v tomto příkladu:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
V příkazu az functionapp create určuje parametr --environment prostředí Container Apps a parametr --image určuje obrázek, který se má použít pro aplikaci funkcí. V tomto příkladu nahraďte <STORAGE_NAME> názvem, který jste použili v předchozí části pro účet storage. Nahraďte <APP_NAME> také názvem, který je pro vás v prostředí jedinečný.
Pokud chcete nastavit prostředky přidělené aplikaci, nahraďte <CPU_COUNT> požadovaným počtem virtuálních procesorů minimálně 0,5 až do maximálního povoleného počtu virtuálních procesorů. Pro <MEMORY_SIZE> zvolte velikost vyhrazené paměti od 1 GB až do maximálně povoleného profilem.
Pomocí příkazu az functionapp container set můžete spravovat přidělené prostředky a profil úlohy používaný vaší aplikací.
az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
Použijte nastavení aplikace
Azure Functions umožňuje pracovat s nastavením aplikace pro kontejnerizované aplikace funkcí standardním způsobem. Další informace najdete v tématu Použití nastavení aplikace.
Tip
Kontejnerizovaná aplikace funkcí ve výchozím nastavení monitoruje port 80 příchozích požadavků. Pokud vaše aplikace musí používat jiný port, změňte tento port pomocí WEBSITES_PORT nastavení aplikace .
Povolení průběžného nasazování pro Azure
Když hostujete kontejnerizovanou aplikaci funkcí na Azure Container Apps, existují dva způsoby, jak nastavit průběžné nasazování z úložiště zdrojového kódu:
V současné době nemůžete průběžně nasazovat kontejnery na základě změn imagí v registru kontejneru. Musíte místo toho použít tyto na zdrojovém kódu založené pipeliny průběžného nasazování.
Povolení průběžného nasazování pro Azure
Important
Nasazení založené na webhooku se v současné době nepodporuje při spouštění kontejneru v plánu Elastic Premium. Pokud potřebujete použít metodu průběžného nasazování popsanou v této části, místo toho nasaďte kontejner do plánu App Service. Při spuštění v plánu Elastic Premium je potřeba ručně restartovat aplikaci pokaždé, když v úložišti provedete aktualizace kontejneru.
Průběžné nasazování můžete také nakonfigurovat z úložiště zdrojového kódu pomocí Azure Pipelines nebo GitHub Actions.
Můžete povolit službu Azure Functions, aby automaticky aktualizovala vaše nasazení image pokaždé, když aktualizujete image v registru.
- Pomocí následujícího příkazu povolte průběžné nasazování a získejte adresu URL webhooku:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
Příkaz az functionapp deployment container config umožňuje průběžné nasazování a vrací adresu URL webhooku nasazení. Tuto adresu URL můžete kdykoli načíst pomocí příkazu az functionapp deployment container show-cd-url.
Stejně jako předtím nahraďte <APP_NAME> jménem aplikace vaší funkce.
Zkopírujte adresu URL webhooku nasazení do schránky.
Otevřete Docker Hub, přihlaste se a na navigačním panelu vyberte Repositories. Vyhledejte a vyberte obrázek, vyberte kartu Webhooky , zadejte název webhooku, vložte adresu URL do adresy URL webhooku a pak vyberte Vytvořit.
Při nastavení webhooku Azure Functions image znovu nasadí při každé aktualizaci v Docker Hub.
Povolení připojení SSH
SSH umožňuje zabezpečenou komunikaci mezi kontejnerem a klientem. S povoleným SSH se můžete ke kontejneru připojit pomocí App Service Advanced Tools (Kudu). Pro snadné připojení ke kontejneru pomocí SSH poskytuje Azure Functions základní image, která už má povolený SSH. Soubor Dockerfile stačí upravit, pak znovu sestavit a znovu nasadit image. K kontejneru se pak můžete připojit prostřednictvím rozšířených nástrojů (Kudu).
V souboru Dockerfile připojte řetězec
-appservicek základní image v instrukci, jak je znázorněno v následujícím příkladu:FROM mcr.microsoft.com/azure-functions/node:4-node18-appserviceV tomto příkladu se používá základní image verze Node.js verze 18 s podporou SSH. Navštivte úložiště základních obrazů Azure Functions a ověřte, zda používáte nejnovější verzi základního obrazu s povoleným SSH.
Znovu sestavte image pomocí příkazu
docker build, nahraďte<DOCKER_ID>ID účtu Docker Hub, jak je znázorněno v následujícím příkladu.docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .Pushněte aktualizovanou image do Docker Hub, což by mělo trvat podstatně méně času než první odeslání. Teď je potřeba nahrát jenom aktualizované segmenty obrázku.
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0Azure Functions automaticky znovu nasazuje image do vaší aplikace funkcí. Proces probíhá za méně než minutu.
V Azure portal vyhledejte aplikaci funkcí. V nabídce vlevo vyberte SSH pro vývojové nástroje>. Vyberte Spustit. Připojení může chvíli trvat, pokud Azure stále aktualizuje image kontejneru.
Po navázání připojení s vaším kontejnerem spusťte
toppříkaz, který zobrazí aktuálně spuštěné procesy.
Související obsah
Další informace o nasazení a správě kontejnerů najdete v následujících článcích: