Skip to content

Commit 223650f

Browse files
Merge pull request #271258 from btardif/compose
Volumes must be quoted
2 parents f320d42 + bf3374f commit 223650f

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

articles/app-service/configure-custom-container.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ This article shows you how to configure a custom container to run on Azure App S
1515

1616
::: zone pivot="container-windows"
1717

18-
This guide provides key concepts and instructions for containerization of Windows apps in App Service. If you've never used Azure App Service, follow the [custom container quickstart](quickstart-custom-container.md) and [tutorial](tutorial-custom-container.md) first.
18+
This guide provides key concepts and instructions for containerization of Windows apps in App Service. New Azure App Service users should follow the [custom container quickstart](quickstart-custom-container.md) and [tutorial](tutorial-custom-container.md) first.
1919

2020
::: zone-end
2121

2222
::: zone pivot="container-linux"
2323

24-
This guide provides key concepts and instructions for containerization of Linux apps in App Service. If you've never used Azure App Service, follow the [custom container quickstart](quickstart-custom-container.md) and [tutorial](tutorial-custom-container.md) first. There's also a [multi-container app quickstart](quickstart-multi-container.md) and [tutorial](tutorial-multi-container-app.md). For sidecar containers (preview), see [Tutorial: Configure a sidecar container for custom container in Azure App Service (preview)](tutorial-custom-container-sidecar.md).
24+
This guide provides key concepts and instructions for containerization of Linux apps in App Service. If are new to Azure App Service, follow the [custom container quickstart](quickstart-custom-container.md) and [tutorial](tutorial-custom-container.md) first. There's also a [multi-container app quickstart](quickstart-multi-container.md) and [tutorial](tutorial-multi-container-app.md). For sidecar containers (preview), see [Tutorial: Configure a sidecar container for custom container in Azure App Service (preview)](tutorial-custom-container-sidecar.md).
2525

2626
::: zone-end
2727

@@ -70,14 +70,14 @@ For *\<username>* and *\<password>*, supply the sign-in credentials for your pri
7070

7171
## Use managed identity to pull image from Azure Container Registry
7272

73-
Use the following steps to configure your web app to pull from ACR using managed identity. The steps use system-assigned managed identity, but you can use user-assigned managed identity as well.
73+
Use the following steps to configure your web app to pull from Azure Container Registry (ACR) using managed identity. The steps use system-assigned managed identity, but you can use user-assigned managed identity as well.
7474

7575
1. Enable [the system-assigned managed identity](./overview-managed-identity.md) for the web app by using the [`az webapp identity assign`](/cli/azure/webapp/identity#az-webapp-identity-assign) command:
7676

7777
```azurecli-interactive
7878
az webapp identity assign --resource-group <group-name> --name <app-name> --query principalId --output tsv
7979
```
80-
Replace `<app-name>` with the name you used in the previous step. The output of the command (filtered by the `--query` and `--output` arguments) is the service principal ID of the assigned identity, which you use shortly.
80+
Replace `<app-name>` with the name you used in the previous step. The output of the command (filtered by the `--query` and `--output` arguments) is the service principal ID of the assigned identity.
8181
1. Get the resource ID of your Azure Container Registry:
8282
```azurecli-interactive
8383
az acr show --resource-group <group-name> --name <registry-name> --query id --output tsv
@@ -105,7 +105,7 @@ Use the following steps to configure your web app to pull from ACR using managed
105105
- `<app-name>` with the name of your web app.
106106
>[!Tip]
107107
> If you are using PowerShell console to run the commands, you need to escape the strings in the `--generic-configurations` argument in this and the next step. For example: `--generic-configurations '{\"acrUseManagedIdentityCreds\": true'`
108-
1. (Optional) If your app uses a [user-assigned managed identity](overview-managed-identity.md#add-a-user-assigned-identity), make sure this is configured on the web app and then set the `acrUserManagedIdentityID` property to specify its client ID:
108+
1. (Optional) If your app uses a [user-assigned managed identity](overview-managed-identity.md#add-a-user-assigned-identity), make sure the identity is configured on the web app and then set the `acrUserManagedIdentityID` property to specify its client ID:
109109
110110
```azurecli-interactive
111111
az identity show --resource-group <group-name> --name <identity-name> --query clientId --output tsv
@@ -120,7 +120,7 @@ You're all set, and the web app now uses managed identity to pull from Azure Con
120120
121121
## Use an image from a network protected registry
122122
123-
To connect and pull from a registry inside a virtual network or on-premises, your app must integrate with a virtual network. This is also needed for Azure Container Registry with private endpoint. When your network and DNS resolution is configured, you enable the routing of the image pull through the virtual network by configuring the `vnetImagePullEnabled` site setting:
123+
To connect and pull from a registry inside a virtual network or on-premises, your app must integrate with a virtual network (VNET). VNET integration is also needed for Azure Container Registry with private endpoint. When your network and DNS resolution is configured, you enable the routing of the image pull through the virtual network by configuring the `vnetImagePullEnabled` site setting:
124124
125125
```azurecli-interactive
126126
az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.vnetImagePullEnabled [true|false]
@@ -259,26 +259,26 @@ You can connect to your Windows container directly for diagnostic tasks by navig
259259

260260
- It functions separately from the graphical browser above it, which only shows the files in your [shared storage](#use-persistent-shared-storage).
261261
- In a scaled-out app, the SSH session is connected to one of the container instances. You can select a different instance from the **Instance** dropdown in the top Kudu menu.
262-
- Any change you make to the container from within the SSH session does *not* persist when your app is restarted (except for changes in the shared storage), because it's not part of the Docker image. To persist your changes, such as registry settings and software installation, make them part of the Dockerfile.
262+
- Any change you make to the container from within the SSH session **doesn't** persist when your app is restarted (except for changes in the shared storage), because it's not part of the Docker image. To persist your changes, such as registry settings and software installation, make them part of the Dockerfile.
263263

264264
## Access diagnostic logs
265265

266266
App Service logs actions by the Docker host and activities from within the container. Logs from the Docker host (platform logs) are shipped by default, but application logs or web server logs from within the container need to be enabled manually. For more information, see [Enable application logging](troubleshoot-diagnostic-logs.md#enable-application-logging-linuxcontainer) and [Enable web server logging](troubleshoot-diagnostic-logs.md#enable-web-server-logging).
267267

268268
There are several ways to access Docker logs:
269269

270-
- [In the Azure portal](#in-azure-portal)
271-
- [From Kudu](#from-kudu)
272-
- [With the Kudu API](#with-the-kudu-api)
273-
- [Send logs to Azure monitor](troubleshoot-diagnostic-logs.md#send-logs-to-azure-monitor)
270+
- [Azure portal](#in-azure-portal)
271+
- [Kudu](#from-kudu)
272+
- [Kudu API](#with-the-kudu-api)
273+
- [Azure monitor](troubleshoot-diagnostic-logs.md#send-logs-to-azure-monitor)
274274

275275
### In Azure portal
276276

277277
Docker logs are displayed in the portal, in the **Container Settings** page of your app. The logs are truncated, but you can download all the logs selecting **Download**.
278278

279279
### From Kudu
280280

281-
Navigate to `https://<app-name>.scm.azurewebsites.net/DebugConsole` and select the **LogFiles** folder to see the individual log files. To download the entire **LogFiles** directory, select the **Download** icon to the left of the directory name. You can also access this folder using an FTP client.
281+
Navigate to `https://<app-name>.scm.azurewebsites.net/DebugConsole` and select the **LogFiles** folder to see the individual log files. To download the entire **LogFiles** directory, select the **"Download"** icon to the left of the directory name. You can also access this folder using an FTP client.
282282

283283
In the SSH terminal, you can't access the `C:\home\LogFiles` folder by default because persistent shared storage isn't enabled. To enable this behavior in the console terminal, [enable persistent shared storage](#use-persistent-shared-storage).
284284

@@ -292,7 +292,7 @@ To download all the logs together in one ZIP file, access `https://<app-name>.sc
292292

293293
## Customize container memory
294294

295-
By default all Windows Containers deployed in Azure App Service have a memory limit configured. The following table lists the default settings per App Service Plan SKU.
295+
By default all Windows Containers deployed in Azure App Service have a memory limit configured. The following table lists the default settings per App Service Plan SKU.
296296

297297
| App Service Plan SKU | Default memory limit per app in MB |
298298
|-|-|
@@ -317,7 +317,7 @@ In PowerShell:
317317
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITE_MEMORY_LIMIT_MB"=2000}
318318
```
319319

320-
The value is defined in MB and must be less and equal to the total physical memory of the host. For example, in an App Service plan with 8GB RAM, the cumulative total of `WEBSITE_MEMORY_LIMIT_MB` for all the apps must not exceed 8 GB. Information on how much memory is available for each pricing tier can be found in [App Service pricing](https://azure.microsoft.com/pricing/details/app-service/windows/), in the **Premium v3 service plan** section.
320+
The value is defined in MB and must be less and equal to the total physical memory of the host. For example, in an App Service plan with 8 GB RAM, the cumulative total of `WEBSITE_MEMORY_LIMIT_MB` for all the apps must not exceed 8 GB. Information on how much memory is available for each pricing tier can be found in [App Service pricing](https://azure.microsoft.com/pricing/details/app-service/windows/), in the **Premium v3 service plan** section.
321321

322322
## Customize the number of compute cores
323323

@@ -347,7 +347,7 @@ The processors might be multicore or hyperthreading processors. Information on h
347347

348348
## Customize health ping behavior
349349

350-
App Service considers a container to be successfully started when the container starts and responds to an HTTP ping. The health ping request contains the header `User-Agent= "App Service Hyper-V Container Availability Check"`. If the container starts but doesn't respond to a ping after a certain amount of time, App Service logs an event in the Docker log, saying that the container didn't start.
350+
App Service considers a container to be successfully started when the container starts and responds to an HTTP ping. The health ping request contains the header `User-Agent= "App Service Hyper-V Container Availability Check"`. If the container starts but doesn't respond pings after a certain amount of time, App Service logs an event in the Docker log, saying that the container didn't start.
351351

352352
If your application is resource-intensive, the container might not respond to the HTTP ping in time. To control the actions when HTTP pings fail, set the `CONTAINER_AVAILABILITY_CHECK_MODE` app setting. You can set it via the [Cloud Shell](https://shell.azure.com). In Bash:
353353

@@ -469,7 +469,7 @@ Secure Shell (SSH) is commonly used to execute administrative commands remotely
469469
470470
4. Rebuild and push the Docker image to the registry, and then test the Web App SSH feature on Azure portal.
471471
472-
Further troubleshooting information is available at the Azure App Service OSS blog: [Enabling SSH on Linux Web App for Containers](https://azureossd.github.io/2022/04/27/2022-Enabling-SSH-on-Linux-Web-App-for-Containers/index.html#troubleshooting)
472+
Further troubleshooting information is available at the Azure App Service blog: [Enabling SSH on Linux Web App for Containers](https://azureossd.github.io/2022/04/27/2022-Enabling-SSH-on-Linux-Web-App-for-Containers/index.html#troubleshooting)
473473
474474
## Access diagnostic logs
475475
@@ -499,9 +499,9 @@ In your *docker-compose.yml* file, map the `volumes` option to `${WEBAPP_STORAGE
499499
wordpress:
500500
image: <image name:tag>
501501
volumes:
502-
- ${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html
503-
- ${WEBAPP_STORAGE_HOME}/phpmyadmin:/var/www/phpmyadmin
504-
- ${WEBAPP_STORAGE_HOME}/LogFiles:/var/log
502+
- "${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html"
503+
- "${WEBAPP_STORAGE_HOME}/phpmyadmin:/var/www/phpmyadmin"
504+
- "${WEBAPP_STORAGE_HOME}/LogFiles:/var/log"
505505
```
506506
507507
### Preview limitations
@@ -541,7 +541,7 @@ The following lists show supported and unsupported Docker Compose configuration
541541

542542
- "version x.x" always needs to be the first YAML statement in the file
543543
- ports section must use quoted numbers
544-
- image > volume section must be quoted and cannot have permissions definitions
544+
- image > volume section must be quoted and can't have permissions definitions
545545
- volumes section must not have an empty curly brace after the volume name
546546

547547
> [!NOTE]

0 commit comments

Comments
 (0)