Een functie-app maken in een lokale Linux-container
Artikel
In dit artikel leest u hoe u Azure Functions Core-hulpprogramma's gebruikt om uw eerste functie te maken in een Linux-container op uw lokale computer, de functie lokaal te controleren en vervolgens de containerfunctie te publiceren naar een containerregister. Vanuit een containerregister kunt u uw containerfuncties eenvoudig implementeren in Azure.
Zie een van de volgende artikelen voor een volledig voorbeeld van het implementeren van containerfuncties in Azure, waaronder de stappen in dit artikel:
U kunt ook een functie-app maken in Azure Portal met behulp van een bestaande functie-app in een containerregister. Zie Azure Portal maken met behulp van containers voor meer informatie.
Kies uw ontwikkelingstaal
Eerst gebruikt u Azure Functions-hulpprogramma's om uw projectcode te maken als een functie-app in een Docker-container met behulp van een taalspecifieke Linux-basisinstallatiekopieën. Zorg ervoor dat u bovenaan het artikel uw gewenste taal selecteert.
Core Tools genereert automatisch een Dockerfile voor uw project dat gebruikmaakt van de meest recente versie van de juiste basisinstallatiekopieën voor uw functietaal. Werk uw container regelmatig bij vanaf de meest recente basisinstallatiekopie en implementeer deze opnieuw vanuit de bijgewerkte versie van uw container. Zie Containerized Functie-apps maken voor meer informatie.
Vereisten
Voordat u begint, moet u aan de volgende vereisten voldoen:
Als u de containerinstallatiekopieën van de functie-app wilt publiceren die u maakt in een containerregister, hebt u een Docker-id en Docker nodig die op uw lokale computer wordt uitgevoerd. Als u geen Docker-id hebt, kunt u een Docker-account maken.
Voer de volgende opdrachten uit in een geschikte map om een virtuele omgeving met de naam .venv te maken en te activeren. Zorg ervoor dat u een van de Python-versies gebruikt die worden ondersteund door Azure Functions.
De parameter -DjavaVersion laat de Functions-runtime weten welke versie van Java moet worden gebruikt. Gebruik -DjavaVersion=11 als u uw functies wilt uitvoeren in Java 11. Wanneer u -DjavaVersion niet opgeeft, wordt Maven standaard ingesteld op Java 8. Zie Java-versies voor meer informatie.
Belangrijk
De omgevingsvariabele JAVA_HOME moet zijn ingesteld op de installatielocatie van de juiste versie van de JDK om dit artikel te kunnen voltooien.
U wordt door Maven gevraagd om de waarden die nodig zijn om het project op het moment van implementatie te kunnen genereren.
Volg de aanwijzingen en geef de volgende informatie op:
Een waarde die bestaat uit de naam van het JAR-bestand, zonder een versienummer.
version
1.0-SNAPSHOT
Selecteer de standaardwaarde.
package
com.fabrikam.functions
Een waarde die het Java-pakket aangeeft voor de gegenereerde functiecode. Gebruik de standaard.
Typ Y of druk op Enter om te bevestigen.
Maven maakt de projectbestanden in een nieuwe map met de naam artifactId, in dit voorbeeld fabrikam-functions.
De --docker optie genereert een Dockerfile voor het project, waarmee een geschikte container wordt gedefinieerd voor gebruik met Azure Functions en de geselecteerde runtime.
Navigeer naar de projectmap:
cd fabrikam-functions
Gebruik de volgende opdracht om een functie toe te voegen aan uw project, waarbij het --name argument de unieke naam van uw functie is en het --template argument de trigger van de functie aangeeft. func new maakt een C#-codebestand in uw project.
func new --name HttpExample --template "HTTP trigger"
Gebruik de volgende opdracht om een functie toe te voegen aan uw project, waarbij het --name argument de unieke naam van uw functie is en het --template argument de trigger van de functie aangeeft. func new maakt een submap met de naam van de functie die een configuratiebestand bevat met de naam function.json.
func new --name HttpExample --template "HTTP trigger"
Als u de functie lokaal wilt testen, start u de lokale Azure Functions-runtimehost in de hoofdmap van de projectmap.
func start
func start
npm install
npm start
mvn clean package
mvn azure-functions:run
Nadat u het HttpExample eindpunt hebt weergegeven dat naar de uitvoer is geschreven, gaat u naar dat eindpunt. U ziet nu een welkomstbericht in de antwoorduitvoer.
Nadat u het HttpExample eindpunt naar de uitvoer hebt geschreven, gaat u naar http://localhost:7071/api/HttpExample?name=Functions. In de browser moet een 'hello'-bericht worden weergegeven dat wordt herhaald Functions, de waarde die is opgegeven voor de name queryparameter.
Druk op Ctrl+C (Opdracht+C in macOS) om de host te stoppen.
De containerinstallatiekopieën bouwen en lokaal verifiëren
(Optioneel) Bekijk het Dockerfile in de hoofdmap van het project. In het Dockerfile wordt de vereiste omgeving beschreven voor het uitvoeren van de functie-app in Linux. De complete lijst met ondersteunde basisinstallatiekopieën voor Azure Functions vindt u op deze pagina over basisinstallatiekopieën van Azure Functions.
Voer in de hoofdmap van het project de opdracht docker build uit, geef een naam op als azurefunctionsimageen tag als v1.0.0. Vervang <DOCKER_ID> door de ID van uw Docker Hub-account. Met deze opdracht wordt de Docker-installatiekopie voor de container gebouwd.
Wanneer de opdracht is voltooid, kunt u de nieuwe container lokaal uitvoeren.
Als u de build wilt controleren, voert u de installatiekopieën uit in een lokale container met behulp van de opdracht docker run , vervangt <DOCKER_ID> u opnieuw door de id van uw Docker Hub-account en voegt u het argument poorten toe als -p 8080:80:
docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0
Nadat de installatiekopieën in de lokale container zijn gestart, bladert u naar http://localhost:8080/api/HttpExample, waarin hetzelfde begroetingsbericht moet worden weergegeven als voorheen. Omdat de door HTTP geactiveerde functie die u hebt gemaakt anonieme autorisatie gebruikt, kunt u de functie aanroepen die in de container wordt uitgevoerd zonder dat u een toegangssleutel hoeft te verkrijgen. Zie Function access keys (Toegangssleutels voor functie) voor meer informatie.
Nadat de installatiekopie in de lokale container is gestart, bladert u naar http://localhost:8080/api/HttpExample?name=Functionshet bericht 'hello' dat hetzelfde 'hallo' moet weergeven als voorheen. Omdat de door HTTP geactiveerde functie die u hebt gemaakt anonieme autorisatie gebruikt, kunt u de functie aanroepen die in de container wordt uitgevoerd zonder dat u een toegangssleutel hoeft te verkrijgen. Zie Function access keys (Toegangssleutels voor functie) voor meer informatie.
Nadat u de functie-app in de container hebt gecontroleerd, drukt u op Ctrl+C (Opdracht+C in macOS) om de uitvoering te stoppen.
De containerinstallatiekopieën publiceren naar een register
Als u de containerinstallatiekopieën beschikbaar wilt maken voor implementatie naar een hostingomgeving, moet u deze naar een containerregister pushen.
Azure Container Registry is een privéregisterservice voor het bouwen, opslaan en beheren van containerinstallatiekopieën en gerelateerde artefacten. U moet een privéregisterservice gebruiken voor het publiceren van uw containers naar Azure-services.
Gebruik deze opdracht om u aan te melden bij uw registerexemplaren met behulp van uw huidige Azure-referenties:
az acr login --name <REGISTRY_NAME>
Vervang in de vorige opdracht door <REGISTRY_NAME> de naam van uw Container Registry-exemplaar.
Gebruik deze opdracht om uw installatiekopieën te taggen met de volledig gekwalificeerde naam van uw registeraanmeldingsserver:
docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
Vervang door <LOGIN_SERVER> de volledig gekwalificeerde naam van uw registeraanmeldingsserver en <DOCKER_ID> door uw Docker-id.
Gebruik deze opdracht om de container naar uw registerexemplaren te pushen:
Docker Hub is een containerregister die als host fungeert voor installatiekopieën en die services voor installatiekopieën en containers biedt.
Als u zich nog niet hebt aangemeld bij Docker, doet u dit door de docker login opdracht, waarbij u de id van uw Docker Hub-account vervangt <docker_id> . Voor deze opdracht moet u uw gebruikersnaam en wachtwoord opgeven. Een bericht 'Aanmelden geslaagd' bevestigt dat u bent aangemeld.
docker login
Nadat u zich hebt aangemeld, pusht u de installatiekopieën naar Docker Hub met behulp van de docker push opdracht. Vervang de installatiekopieën opnieuw door de <docker_id> id van uw Docker Hub-account.
Afhankelijk van de snelheid van uw netwerk kan het de eerste keer pushen van de installatiekopieën enkele minuten duren. Volgende wijzigingen worden sneller gepusht.
Meer informatie over het maken van een privéregisterservice voor het bouwen, opslaan en beheren van containerinstallatiekopieën en gerelateerde artefacten.
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.