Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Caution
Den här artikeln refererar till CentOS, en Linux-distribution som har statusen End Of Life (EOL). Vänligen överväg ditt användande och planera därefter. Mer information finns i CentOS End Of Life-vägledningen.
Note
Planerna Basic, Standardoch Enterprise gick in i en pensionsperiod den 17 mars 2025. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Den här artikeln gäller för:✅ Standard ✅ Enterprise
Den här artikeln beskriver hur du distribuerar Spring Boot-program i Azure Spring Apps med hjälp av en anpassad containeravbildning. Distribution av ett program med en anpassad container stöder de flesta funktioner som när du distribuerar ett JAR-program. Andra Java- och icke-Java-program kan också distribueras med containeravbildningen.
Prerequisites
- En containeravbildning som innehåller programmet.
- Avbildningen skickas till ett avbildningsregister. Mer information finns i Azure Container Registry.
Note
Webbprogrammet måste lyssna på porten 1025 för Standard-planen och på porten 8080 för Enterprise-planen. Hur du ändrar porten beror på programmets ramverk. Ange till exempel SERVER_PORT=1025 för Spring Boot-program eller ASPNETCORE_URLS=http://+:1025/ för ASP.NET Core-program. Du kan inaktivera avsökningen för program som inte lyssnar på någon port. Mer information finns i Konfigurera hälsoavsökningar och graciösa avslutningsperioder för appar som finns i Azure Spring Apps.
Driftsätt din applikation
Använd följande steg för att distribuera ett program till en anpassad containeravbildning:
Om du vill distribuera en containeravbildning använder du något av följande kommandon:
Om du vill distribuera en containeravbildning till den offentliga Docker Hub till en app använder du följande kommando:
az spring app deploy \ --resource-group <your-resource-group> \ --name <your-app-name> \ --container-image <your-container-image> \ --service <your-service-name>Om du vill distribuera en containeravbildning från ACR till en app eller från ett annat privat register till en app använder du följande kommando:
az spring app deploy \ --resource-group <your-resource-group> \ --name <your-app-name> \ --container-image <your-container-image> \ --service <your-service-name> --container-registry <your-container-registry> \ --registry-password <your-password> | --registry-username <your-username>
Om du vill skriva över startpunkten för avbildningen lägger du till följande två argument i något av ovanstående kommandon:
--container-command "java" \
--container-args "-jar /app.jar -Dkey=value"
Om du vill inaktivera lyssning på en port för avbildningar som inte är webbprogram lägger du till följande argument i kommandona ovan:
--disable-probe true
Matris för funktionsstöd
Följande matris visar vilka funktioner som stöds i varje programtyp.
| Feature | Spring Boot-applikationer – distribution i containrar | Polyglot Apps – containerimplementering | Notes |
|---|---|---|---|
| Applivscykelhantering | ✅ | ✅ | |
| Stöd för containerregister | ✅ | ✅ | |
| Tilldela slutpunkt | ✅ | ✅ | |
| Azure Monitor | ✅ | ✅ | |
| APM-integrering | ✅ | ✅ | Stöds av manuell installation. |
| Blå/grön utplaceringsstrategi | ✅ | ✅ | |
| Anpassad domän | ✅ | ✅ | |
| Skalning – automatisk skalning | ✅ | ✅ | |
| Skalning – manuell skalning (in/ut, upp/ned) | ✅ | ✅ | |
| Hanterad identitet | ✅ | ✅ | |
| Spring Cloud Eureka & Config Server | ✅ | ❎ | |
| API-portalen för VMware Tanzu | ✅ | ✅ | Endast tillgängligt med företagsplan. |
| Spring Cloud Gateway för VMware Tanzu | ✅ | ✅ | Endast företagsplan. |
| Programkonfigurationstjänst för VMware Tanzu | ✅ | ❎ | Gäller endast företagsplan. |
| Applikationens livevy för VMware Tanzu | ✅ | ❎ | Endast företagsplan. |
| VMware Tanzu Service Registry | ✅ | ❎ | Endast tillgänglig för företagsplan. |
| VNET | ✅ | ✅ | Lägg till registret i listan över tillåtna i NSG eller Azure Firewall. |
| Utgående IP-adress | ✅ | ✅ | |
| E2E TLS | ✅ | ✅ | Lita på en självsignerad CA. |
| Inställningar för livskraft och beredskap | ✅ | ✅ | |
| Avancerad felsökning – tråd/heap/JFR-dump | ✅ | ❎ | Bilden måste innehålla Bash och JDK med PATH angivet. |
| Ta med din egen lagring | ✅ | ✅ | |
| Integrera tjänstbindning med Resource Connector | ✅ | ❎ | |
| Tillgänglighetszon | ✅ | ✅ | |
| Händelser i appens livscykel | ✅ | ✅ | |
| Minskad appstorlek – 0,5 vCPU och 512 MB | ✅ | ✅ | |
| Automatisera appdistributioner med Terraform | ✅ | ✅ | |
| Mjuk borttagning | ✅ | ✅ | |
| Interaktiv diagnostikupplevelse (AppLens-baserad) | ✅ | ✅ | |
| SLA | ✅ | ✅ |
Note
Polyglot-appar inkluderar Java-appar som inte är Spring Boot Java, NodeJS, AngularJS, Python och .NET.
Vanliga punkter att vara medveten om när du distribuerar med en anpassad container
Följande punkter hjälper dig att lösa vanliga situationer du stöter på när du distribuerar med en egendefinierad avbildning.
Lita på en certifikatutfärdare
Det finns två alternativ för att lita på en certifikatutfärdare:
Alternativ 1: Ladda upp via Azure Spring Apps
Information om hur du läser in CA-certifikaten i dina appar finns i Använda TLS/SSL-certifikat i ditt program i Azure Spring Apps. Sedan monteras certifikaten på platsen /etc/azure-spring-cloud/certs/public/.
Alternativ 2: Manuell installation i avbildningen
Om du vill lita på en CA i avbildningen ställer du in följande variabler beroende på din Miljö:
Du måste importera Java-program till förtroendearkivet genom att lägga till följande rader i Din Dockerfile:
ADD EnterpriseRootCA.crt /opt/ RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crtAnge miljövariabeln
NODE_EXTRA_CA_CERTSför Node.js program:ADD EnterpriseRootCA.crt /opt/ ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"För Python eller andra språk som förlitar sig på systemets CA-lager, på Debian- eller Ubuntu-avbildningar, lägg till följande miljövariabler:
ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/ RUN /usr/sbin/update-ca-certificatesFör Python, eller andra språk som förlitar sig på system-CA-arkivet, lägg till följande miljövariabler i CentOS- eller Fedora-baserade avbildningar:
ADD EnterpriseRootCA.crt /etc/pki/ca-trust/source/anchors/ RUN /usr/bin/update-ca-trust
Undvik oväntat beteende när bilder ändras
När programmet startas om eller skalas ut hämtas alltid den senaste avbildningen. Om avbildningen har ändrats använder de nyligen startade programinstanserna den nya avbildningen medan de gamla instanserna fortsätter att använda den gamla avbildningen.
Note
Undvik att använda taggen latest eller skriv över avbildningen utan en taggändring för att undvika oväntat programbeteende.
Undvik att inte kunna ansluta till containerregistret i en VNet
Om du distribuerade instansen till ett virtuellt nätverk kontrollerar du att du tillåter nätverkstrafik till containerregistret i NSG eller Azure Firewall (om den används). För mer information, se Kundens ansvar för körning i VNet för att lägga till de nödvändiga säkerhetsreglerna.
Installera en APM i avbildningen manuellt
Installationsstegen varierar på olika programprestandaövervakare (API:er) och språk. Följande steg gäller för New Relic med Java-program. Du måste ändra Dockerfile med hjälp av följande steg:
Ladda ned och installera agentfilen i avbildningen genom att lägga till följande i Dockerfile:
ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jarLägg till de miljövariabler som krävs av APM:
ENV NEW_RELIC_APP_NAME=appName ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKeyÄndra startpunkten för bilden genom att lägga till:
java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar
Om du vill installera agenterna för andra språk läser du den officiella dokumentationen för de andra agenterna:
Ny relik:
- Python: Installera Python-agenten
- Node.js: Installera Node.js-agenten
Dynatrace:
- Python: Instrumentera Python-program med OpenTelemetry
- Node.js: Instrumentera Node.js-applikationer med OpenTelemetry
AppDynamics:
- Python: Installera Python-agenten
- Node.js: Installera Node.js-agenten
Visa containerloggarna
Om du vill visa konsolloggarna för ditt containerprogram kan du använda följande CLI-kommando:
az spring app logs \
--resource-group <your-resource-group> \
--name <your-app-name> \
--service <your-service-name> \
--instance <your-instance-name>
Om du vill visa containerhändelseloggarna från Azure Monitor anger du frågan:
AppPlatformContainerEventLogs
| where App == "hw-20220317-1b"
Sök igenom avbildningen efter sårbarheter
Vi rekommenderar att du använder Microsoft Defender för molnet med ACR för att förhindra att dina bilder blir sårbara. Mer information finns i Microsoft Defender för molnet
Växla mellan JAR-distribution och containerdistribution
Du kan växla distributionstypen från JAR-distribution till containerdistribution direkt genom att distribuera om med hjälp av följande kommando:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--container-image <your-container-image> \
--service <your-service-name>
Eller omvänt:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--artifact-path <your-jar-file> \
--service <your-service-name>
Skapa en annan distribution med en befintlig JAR-distribution
Du kan skapa en annan distribution med hjälp av en befintlig JAR-distribution med hjälp av följande kommando:
az spring app deployment create \
--resource-group <your-resource-group> \
--name <your-deployment-name> \
--app <your-app-name> \
--container-image <your-container-image> \
--service <your-service-name>
CI/CD
Nu stöds att automatisera distributioner genom Azure Pipelines-uppgifter eller GitHub Actions. Mer information finns i Automatisera programdistributioner till Azure Spring Apps och Använda Azure Spring Apps CI/CD med GitHub Actions