Add Web App with Custom Docker Image sample#78
Merged
paolosalvatori merged 7 commits intomainfrom May 8, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR expands the repository’s Azure Web App sample set by adding an “Azure Web App with Custom Docker Image” sample (with richer, enterprise-style networking/observability) and updates many sample READMEs to point LocalStack for Azure docs to https://docs.localstack.cloud/azure/.
Changes:
- Added a new
web-app-custom-imagesample with Azure CLI, Bicep, and Terraform deployment options (plus validation/call scripts and architecture docs). - Introduced reusable Terraform modules for the custom-image sample (ACR, VNet/subnets, NSGs, NAT gateway, private endpoint/DNS, Log Analytics, App Service Plan, Web App).
- Updated many existing sample READMEs to reference the new LocalStack for Azure documentation URL.
Reviewed changes
Copilot reviewed 101 out of 104 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| samples/web-app-sql-database/python/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-sql-database/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-sql-database/python/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-sql-database/python/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-managed-identity/python/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-managed-identity/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-managed-identity/python/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-managed-identity/python/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-custom-image/python/terraform/variables.tf | Define Terraform input variables for custom-image deployment. |
| samples/web-app-custom-image/python/terraform/terraform.tfvars | Provide default Terraform variable values for the sample. |
| samples/web-app-custom-image/python/terraform/README.md | Document Terraform-based deployment of the custom-image sample. |
| samples/web-app-custom-image/python/terraform/push_image.sh | Script to build/tag/push container image to ACR for Terraform flow. |
| samples/web-app-custom-image/python/terraform/providers.tf | Terraform provider configuration (azurerm + null). |
| samples/web-app-custom-image/python/terraform/outputs.tf | Terraform outputs for deployed resources. |
| samples/web-app-custom-image/python/terraform/main.tf | Root Terraform composition wiring modules/resources together. |
| samples/web-app-custom-image/python/terraform/deploy.sh | Script to run terraform init/plan/apply and print resources. |
| samples/web-app-custom-image/python/terraform/modules/web_app/variables.tf | Variables for the web app Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/web_app/outputs.tf | Outputs for the web app Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/web_app/main.tf | Web app Terraform module (linux_web_app + diagnostics + optional source control). |
| samples/web-app-custom-image/python/terraform/modules/virtual_network/variables.tf | Variables for the virtual network Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/virtual_network/outputs.tf | Outputs for the virtual network Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/virtual_network/main.tf | Virtual network/subnets Terraform module + diagnostics. |
| samples/web-app-custom-image/python/terraform/modules/private_endpoint/variables.tf | Variables for private endpoint Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/private_endpoint/outputs.tf | Outputs for private endpoint Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/private_endpoint/main.tf | Private endpoint Terraform module configuration. |
| samples/web-app-custom-image/python/terraform/modules/private_dns_zone/variables.tf | Variables for private DNS zone Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/private_dns_zone/outputs.tf | Outputs for private DNS zone Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/private_dns_zone/main.tf | Private DNS zone + VNet link Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/network_security_group/variables.tf | Variables for NSG Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/network_security_group/outputs.tf | Outputs for NSG Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/network_security_group/main.tf | NSG rules + subnet association + diagnostics Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/nat_gateway/variables.tf | Variables for NAT gateway Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/nat_gateway/output.tf | Outputs for NAT gateway Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/nat_gateway/main.tf | NAT gateway + public IP prefix + subnet association Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/managed_identity/variables.tf | Variables for managed identity Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/managed_identity/output.tf | Outputs for managed identity Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/managed_identity/main.tf | User-assigned identity + AcrPull role assignment module. |
| samples/web-app-custom-image/python/terraform/modules/log_analytics/variables.tf | Variables for Log Analytics Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/log_analytics/output.tf | Outputs for Log Analytics Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/log_analytics/main.tf | Log Analytics workspace Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/container_registry/variables.tf | Variables for container registry Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/container_registry/output.tf | Outputs for container registry Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/container_registry/main.tf | Container registry Terraform module + identity + diagnostics. |
| samples/web-app-custom-image/python/terraform/modules/app_service_plan/variables.tf | Variables for App Service Plan Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/app_service_plan/outputs.tf | Outputs for App Service Plan Terraform module. |
| samples/web-app-custom-image/python/terraform/modules/app_service_plan/main.tf | App Service Plan Terraform module + diagnostics. |
| samples/web-app-custom-image/python/src/app.py | Adjust default IMAGE_NAME used in UI/status endpoint. |
| samples/web-app-custom-image/python/scripts/validate.sh | Expand validation to check enterprise-style resources (VNet/NSG/PE/NAT/LA). |
| samples/web-app-custom-image/python/scripts/README.md | Expand Azure CLI deployment documentation for the custom-image sample. |
| samples/web-app-custom-image/python/scripts/deploy.sh | Expand Azure CLI provisioning script for enterprise-style architecture. |
| samples/web-app-custom-image/python/scripts/call-web-app.sh | Align resource naming with updated RG/web app name conventions. |
| samples/web-app-custom-image/python/README.md | Expand top-level sample documentation and architecture overview. |
| samples/web-app-custom-image/python/bicep/README.md | Add Bicep deployment documentation for custom-image sample. |
| samples/web-app-custom-image/python/bicep/modules/web-app.bicep | Add Bicep module for Web App (managed identity + diagnostics + optional source control). |
| samples/web-app-custom-image/python/bicep/modules/virtual-network.bicep | Add Bicep module for VNet/subnets/NSGs/NAT + diagnostics. |
| samples/web-app-custom-image/python/bicep/modules/private-endpoint.bicep | Add Bicep module for private endpoint + DNS zone group. |
| samples/web-app-custom-image/python/bicep/modules/private-dns-zone.bicep | Add Bicep module for private DNS zone + VNet link. |
| samples/web-app-custom-image/python/bicep/modules/managed-identity.bicep | Add Bicep module for user-assigned identity + AcrPull assignment. |
| samples/web-app-custom-image/python/bicep/modules/log-analytics.bicep | Add Bicep module for Log Analytics workspace. |
| samples/web-app-custom-image/python/bicep/modules/container-registry.bicep | Add Bicep module for ACR + diagnostics. |
| samples/web-app-custom-image/python/bicep/modules/app-service-plan.bicep | Add Bicep module for App Service Plan + diagnostics. |
| samples/web-app-custom-image/python/bicep/main.bicepparam | Add parameter file for main Bicep deployment. |
| samples/web-app-custom-image/python/bicep/main.bicep | Add main Bicep composition deploying identity/network/dns/pe/plan/webapp. |
| samples/web-app-custom-image/python/bicep/deploy.sh | Add deployment script orchestrating ACR + image push + remaining resources. |
| samples/web-app-custom-image/python/bicep/acr.bicepparam | Add parameter file for ACR phase deployment. |
| samples/web-app-custom-image/python/bicep/acr.bicep | Add Bicep template to deploy ACR + Log Analytics workspace. |
| samples/web-app-cosmosdb-nosql-api/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-nosql-api/python/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-mongodb-api/python/terraform/variables.tf | Rename/align websites port variable naming. |
| samples/web-app-cosmosdb-mongodb-api/python/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-mongodb-api/python/terraform/modules/app_service_plan/main.tf | Remove invalid/irrelevant diagnostic log category for App Service Plan. |
| samples/web-app-cosmosdb-mongodb-api/python/terraform/main.tf | Remove unused local and align WEBSITES_PORT setting. |
| samples/web-app-cosmosdb-mongodb-api/python/scripts/validate.sh | Align variable names for web app / subnet NSG identifiers. |
| samples/web-app-cosmosdb-mongodb-api/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-mongodb-api/python/scripts/deploy.sh | Align variable names and WEBSITES_PORT setting. |
| samples/web-app-cosmosdb-mongodb-api/python/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-mongodb-api/python/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/web-app-cosmosdb-mongodb-api/python/bicep/modules/web-app.bicep | Align WEBSITE(S)_PORT app setting key. |
| samples/web-app-cosmosdb-mongodb-api/python/bicep/main.bicepparam | Align default prefix value for sample deployment. |
| samples/web-app-cosmosdb-mongodb-api/python/bicep/main.bicep | Factor private DNS zone name into a variable and reuse it. |
| samples/servicebus/java/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/servicebus/java/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/servicebus/java/README.md | Update LocalStack for Azure documentation link. |
| samples/servicebus/java/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-storage-http/dotnet/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-storage-http/dotnet/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-storage-http/dotnet/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-storage-http/dotnet/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-service-bus/dotnet/terraform/variables.tf | Remove unused website_port variable. |
| samples/function-app-service-bus/dotnet/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-service-bus/dotnet/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-service-bus/dotnet/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-service-bus/dotnet/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-managed-identity/python/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-managed-identity/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-managed-identity/python/README.md | Update LocalStack for Azure documentation link. |
| samples/function-app-managed-identity/python/bicep/README.md | Update LocalStack for Azure documentation link. |
| samples/aci-blob-storage/python/terraform/README.md | Update LocalStack for Azure documentation link. |
| samples/aci-blob-storage/python/scripts/README.md | Update LocalStack for Azure documentation link. |
| samples/aci-blob-storage/python/bicep/README.md | Update LocalStack for Azure documentation link. |
| README.md | Update repo-level LocalStack for Azure documentation link. |
| .gitignore | Add Terraform working/state files to gitignore. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…stry module Agent-Logs-Url: https://github.com/localstack/localstack-azure-samples/sessions/f4b9445e-0f95-4086-99a6-d7fc7d8e5026 Co-authored-by: paolosalvatori <1658419+paolosalvatori@users.noreply.github.com>
…able Agent-Logs-Url: https://github.com/localstack/localstack-azure-samples/sessions/406e9650-f8ef-48d0-875c-d862428b657f Co-authored-by: paolosalvatori <1658419+paolosalvatori@users.noreply.github.com>
Agent-Logs-Url: https://github.com/localstack/localstack-azure-samples/sessions/e100db37-5dea-4c4e-a4aa-4aad5ef381bd Co-authored-by: paolosalvatori <1658419+paolosalvatori@users.noreply.github.com>
DrisDary
approved these changes
May 8, 2026
Contributor
DrisDary
left a comment
There was a problem hiding this comment.
Nice Job @paolosalvatori 👍
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
This pull requests makes the overall architecture of the Web App with Custom Docker Image sample more complex and enterprise-ready.
Changes
This pull request introduces the following updates:
README.mdfiles.In addition, this pull request replaces
https://azure.localstack.cloud/references to the old URL of the emulator documentation with references to the new URLhttps://docs.localstack.cloud/azure/. NOTE: this change was not strictly necessary as all the accesses to the old URL are automatically redirected to the new URL.Tests
The Azure CLI, Bicep, and Terraform deployments were successfully tested against Azure and LocalStack for Azure emulator. However, the Terraform deployment requires this #6979 to be merged in order to succeed.