Tutoriel : Créer une application multiconteneur (préversion) dans Web App pour conteneursTutorial: Create a multi-container (preview) app in Web App for Containers

Notes

La fonctionnalité multiconteneur est en préversion.Multi-container is in preview.

Web App pour conteneurs fournit une solution souple d’utilisation des images Docker.Web App for Containers provides a flexible way to use Docker images. Dans ce didacticiel, vous allez apprendre à créer une application à plusieurs conteneurs à l’aide de WordPress et de MySQL.In this tutorial, you'll learn how to create a multi-container app using WordPress and MySQL. Vous allez effectuer ce tutoriel dans Cloud Shell, mais vous pouvez également exécuter ces commandes localement avec l’outil en ligne de commande Azure CLI (2.0.32 ou ultérieur).You'll complete this tutorial in Cloud Shell, but you can also run these commands locally with the Azure CLI command-line tool (2.0.32 or later).

Dans ce tutoriel, vous allez apprendre à :In this tutorial, you learn how to:

  • Convertir une configuration Docker Compose pour travailler avec Web App pour conteneursConvert a Docker Compose configuration to work with Web App for Containers
  • Déployer une application à plusieurs conteneurs vers AzureDeploy a multi-container app to Azure
  • Ajouter des paramètres d’applicationAdd application settings
  • Utiliser le stockage persistant pour vos conteneursUse persistent storage for your containers
  • Se connecter à la base de données Azure pour MySQLConnect to Azure Database for MySQL
  • Résoudre les erreursTroubleshoot errors

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

PrérequisPrerequisites

Pour suivre ce tutoriel, vous devez connaître Docker Compose.To complete this tutorial, you need experience with Docker Compose.

Télécharger l’exempleDownload the sample

Pour ce tutoriel, vous utilisez le fichier de composition de Docker, mais vous le modifiez pour inclure Azure Database pour MySQL, le stockage persistant et Redis.For this tutorial, you use the compose file from Docker, but you'll modify it to include Azure Database for MySQL, persistent storage, and Redis. Le fichier de configuration se trouve dans les exemples Azure.The configuration file can be found at Azure Samples. Pour connaître les options de configuration prises en charge, consultez Options Docker Compose.For supported configuration options, see Docker Compose options.

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

Dans Cloud Shell, créez un répertoire pour le tutoriel, puis accédez à ce répertoire.In Cloud Shell, create a tutorial directory and then change to it.

mkdir tutorial

cd tutorial

Exécutez ensuite la commande suivante pour cloner le dépôt de l’exemple d’application dans le répertoire de votre tutoriel.Next, run the following command to clone the sample app repository to your tutorial directory. Accédez ensuite au répertoire multicontainerwordpress.Then change to the multicontainerwordpress directory.

git clone https://github.com/Azure-Samples/multicontainerwordpress

cd multicontainerwordpress

Créer un groupe de ressourcesCreate a resource group

Un groupe de ressources est un conteneur logique dans lequel les ressources Azure, comme les applications web, les bases de données et les comptes de stockage, sont déployées et managées.A resource group is a logical container into which Azure resources, such as web apps, databases, and storage accounts, are deployed and managed. Par exemple, vous pouvez choisir de supprimer le groupe de ressources complet ultérieurement en une seule étape.For example, you can choose to delete the entire resource group in one simple step later.

Dans Cloud Shell, créez un groupe de ressources avec la commande az group create.In Cloud Shell, create a resource group with the az group create command. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement USA Centre Sud.The following example creates a resource group named myResourceGroup in the South Central US location. Pour afficher tous les emplacements pris en charge pour App Service sous Linux au niveau Standard, exécutez la commande az appservice list-locations --sku S1 --linux-workers-enabled.To see all supported locations for App Service on Linux in Standard tier, run the az appservice list-locations --sku S1 --linux-workers-enabled command.

az group create --name myResourceGroup --location "South Central US"

Vous créez généralement votre groupe de ressources et les ressources dans une région proche de chez vous.You generally create your resource group and the resources in a region near you.

Une fois la commande terminée, une sortie JSON affiche les propriétés du groupe de ressources.When the command finishes, a JSON output shows you the resource group properties.

Créer un plan Azure App ServiceCreate an Azure App Service plan

Dans Cloud Shell, créez un plan App Service dans le groupe de ressources avec la commande az appservice plan create.In Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

L’exemple suivant crée un plan App Service nommé myAppServicePlan dans le niveau tarifaire Standard (--sku S1) et un conteneur Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Standard pricing tier (--sku S1) and in a Linux container (--is-linux).

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku S1 --is-linux

Une fois le plan App Service créé, Cloud Shell affiche des informations similaires à l’exemple suivant :When the App Service plan has been created, Cloud Shell shows information similar to the following example:

{
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "South Central US",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "South Central US",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
}

Docker Compose avec conteneurs WordPress et MySQLDocker Compose with WordPress and MySQL containers

Création d’une application Docker ComposeCreate a Docker Compose app

Dans Cloud Shell, créez une application web multiconteneur dans le plan App Service myAppServicePlan avec la commande az webapp create.In your Cloud Shell, create a multi-container web app in the myAppServicePlan App Service plan with the az webapp create command. N’oubliez pas de remplacer <app-name> par un nom d’application unique.Don't forget to replace <app-name> with a unique app name.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --multicontainer-config-type compose --multicontainer-config-file docker-compose-wordpress.yml

Une fois l’application web créée, Cloud Shell affiche une sortie similaire à l’exemple suivant :When the web app has been created, Cloud Shell shows output similar to the following example:

{
  "additionalProperties": {},
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "enabled": true,
  < JSON data removed for brevity. >
}

Accéder à l’applicationBrowse to the app

Accédez à l’application déployée dans (http://<app-name>.azurewebsites.net).Browse to the deployed app at (http://<app-name>.azurewebsites.net). Le chargement de l’application peut prendre plusieurs minutes.The app may take a few minutes to load. Si vous recevez une erreur, attendez quelques minutes supplémentaires, puis actualisez le navigateur.If you receive an error, allow a few more minutes then refresh the browser. Si vous rencontrez des difficultés et souhaitez résoudre les problèmes, consultez les journaux d’activité du conteneur.If you're having trouble and would like to troubleshoot, review container logs.

Exemple d’application à plusieurs conteneurs sur Web App pour conteneurs

Félicitations, vous avez créé une application à plusieurs conteneurs dans Web App pour conteneurs.Congratulations, you've created a multi-container app in Web App for Containers. Ensuite, vous devez configurer votre application pour utiliser Azure Database pour MySQL.Next you'll configure your app to use Azure Database for MySQL. N’installez pas WordPress pour le moment.Don't install WordPress at this time.

Connexion à la base de données de productionConnect to production database

Il n’est pas recommandé d’utiliser des conteneurs de base de données dans un environnement de production.It's not recommended to use database containers in a production environment. Les conteneurs locaux ne sont pas évolutifs.The local containers aren't scalable. Au lieu de cela, vous allez utiliser Azure Database pour MySQL qui peut être mis à l’échelle.Instead, you'll use Azure Database for MySQL which can be scaled.

Création d’un serveur Azure Database pour MySQLCreate an Azure Database for MySQL server

Créez un serveur Azure Database pour MySQL avec la commande az mysql server create.Create an Azure Database for MySQL server with the az mysql server create command.

Dans la commande suivante, indiquez le nom unique de votre propre serveur MySQL là où se trouve l’espace réservé <mysql-server-name> (les caractères valides sont a-z, 0-9 et -).In the following command, substitute your MySQL server name where you see the <mysql-server-name> placeholder (valid characters are a-z, 0-9, and -). Ce nom fait partie du nom d’hôte du serveur MySQL (<mysql-server-name>.database.windows.net) et doit donc être globalement unique.This name is part of the MySQL server's hostname (<mysql-server-name>.database.windows.net), it needs to be globally unique.

az mysql server create --resource-group myResourceGroup --name <mysql-server-name>  --location "South Central US" --admin-user adminuser --admin-password My5up3rStr0ngPaSw0rd! --sku-name B_Gen5_1 --version 5.7

La création du serveur peut prendre quelques minutes.Creating the server may take a few minutes to complete. Une fois le serveur MySQL créé, Cloud Shell affiche des informations similaires à l’exemple suivant :When the MySQL server is created, Cloud Shell shows information similar to the following example:

{
  "administratorLogin": "adminuser",
  "administratorLoginPassword": null,
  "fullyQualifiedDomainName": "<mysql-server-name>.database.windows.net",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.DBforMySQL/servers/<mysql-server-name>",
  "location": "southcentralus",
  "name": "<mysql-server-name>",
  "resourceGroup": "myResourceGroup",
  ...
}

Configuration d’un pare-feu de serveurConfigure server firewall

Créez une règle de pare-feu pour votre serveur MySQL afin d’autoriser les connexions client à l’aide de la commande az mysql server firewall-rule create.Create a firewall rule for your MySQL server to allow client connections by using the az mysql server firewall-rule create command. Lorsque les adresses IP de début et de fin sont définies sur 0.0.0.0, le pare-feu est ouvert uniquement pour les autres ressources Azure.When both starting IP and end IP are set to 0.0.0.0, the firewall is only opened for other Azure resources.

az mysql server firewall-rule create --name allAzureIPs --server <mysql-server-name> --resource-group myResourceGroup --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Conseil

Vous pouvez être encore plus restrictif dans votre règle de pare-feu en choisissant uniquement les adresses IP sortantes que votre application utilise.You can be even more restrictive in your firewall rule by using only the outbound IP addresses your app uses.

Création de la base de données WordPressCreate the WordPress database

az mysql db create --resource-group myResourceGroup --server-name <mysql-server-name> --name wordpress

Une fois la base de données créée, Cloud Shell affiche des informations similaires à l’exemple suivant :When the database has been created, Cloud Shell shows information similar to the following example:

{
  "additionalProperties": {},
  "charset": "latin1",
  "collation": "latin1_swedish_ci",
  "id": "/subscriptions/12db1644-4b12-4cab-ba54-8ba2f2822c1f/resourceGroups/myResourceGroup/providers/Microsoft.DBforMySQL/servers/<mysql-server-name>/databases/wordpress",
  "name": "wordpress",
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.DBforMySQL/servers/databases"
}

Configuration des variables de la base de données dans WordPressConfigure database variables in WordPress

Pour connecter l’application WordPress à ce nouveau serveur MySQL, vous devez configurer quelques variables d’environnement spécifiques à WordPress, y compris le chemin d’accès de l’autorité de certification SSL défini par MYSQL_SSL_CA.To connect the WordPress app to this new MySQL server, you'll configure a few WordPress-specific environment variables, including the SSL CA path defined by MYSQL_SSL_CA. Le certificat racine CyberTrust Baltimore de DigiCert est fourni dans l’image personnalisée ci-dessous.The Baltimore CyberTrust Root from DigiCert is provided in the custom image below.

Pour effectuer ces modifications, utilisez la commande az webapp config appsettings set dans Cloud Shell.To make these changes, use the az webapp config appsettings set command in Cloud Shell. Les paramètres d’application respectent la casse et sont séparés par des espaces.App settings are case-sensitive and space-separated.

az webapp config appsettings set --resource-group myResourceGroup --name <app-name> --settings WORDPRESS_DB_HOST="<mysql-server-name>.mysql.database.azure.com" WORDPRESS_DB_USER="adminuser@<mysql-server-name>" WORDPRESS_DB_PASSWORD="My5up3rStr0ngPaSw0rd!" WORDPRESS_DB_NAME="wordpress" MYSQL_SSL_CA="BaltimoreCyberTrustroot.crt.pem"

Une fois le paramètre d’application créé, Cloud Shell affiche des informations similaires à l’exemple suivant :When the app setting has been created, Cloud Shell shows information similar to the following example:

[
  {
    "name": "WORDPRESS_DB_HOST",
    "slotSetting": false,
    "value": "<mysql-server-name>.mysql.database.azure.com"
  },
  {
    "name": "WORDPRESS_DB_USER",
    "slotSetting": false,
    "value": "adminuser@<mysql-server-name>"
  },
  {
    "name": "WORDPRESS_DB_NAME",
    "slotSetting": false,
    "value": "wordpress"
  },
  {
    "name": "WORDPRESS_DB_PASSWORD",
    "slotSetting": false,
    "value": "My5up3rStr0ngPaSw0rd!"
  },
  {
    "name": "MYSQL_SSL_CA",
    "slotSetting": false,
    "value": "BaltimoreCyberTrustroot.crt.pem"
  }
]

Pour plus d’informations sur les variables d’environnement, consultez Configurer des variables d’environnement.For more information on environment variables, see Configure environment variables.

Utilisation d’une image personnalisée pour le protocole SSL de MySQL et d’autres configurationsUse a custom image for MySQL SSL and other configurations

Par défaut, SSL est utilisé par Azure Database pour MySQL.By default, SSL is used by Azure Database for MySQL. WordPress nécessite une configuration supplémentaire pour utiliser SSL avec MySQL.WordPress requires additional configuration to use SSL with MySQL. « L’image officielle » de WordPress ne fournit pas la configuration supplémentaire, mais une image personnalisée a été préparée pour vous simplifier la tâche.The WordPress 'official image' doesn't provide the additional configuration, but a custom image has been prepared for your convenience. En pratique, vous devez ajouter les modifications souhaitées à votre propre image.In practice, you would add desired changes to your own image.

L’image personnalisée est basée sur « l’image officielle » de WordPress provenant du Hub Docker.The custom image is based on the 'official image' of WordPress from Docker Hub. Les modifications suivantes ont été apportées dans cette image personnalisée pour Azure Database pour MySQL :The following changes have been made in this custom image for Azure Database for MySQL:

Les modifications suivantes ont été apportées pour Redis (à utiliser dans une section ultérieure) :The following changes have been made for Redis (to be used in a later section):

Pour utiliser l’image personnalisée, vous devez mettre à jour votre fichier docker-compose-wordpress.yml.To use the custom image, you'll update your docker-compose-wordpress.yml file. Dans Cloud Shell, tapez nano docker-compose-wordpress.yml pour ouvrir l’éditeur de texte nano.In Cloud Shell, type nano docker-compose-wordpress.yml to open the nano text editor. Remplacez image: wordpress par image: mcr.microsoft.com/azuredocs/multicontainerwordpress.Change the image: wordpress to use image: mcr.microsoft.com/azuredocs/multicontainerwordpress. Vous n’avez plus besoin du conteneur de base de données.You no longer need the database container. Supprimer les sections db, environment, depends_on et volumes du fichier de configuration.Remove the db, environment, depends_on, and volumes section from the configuration file. Votre fichier doit ressembler au code suivant :Your file should look like the following code:

version: '3.3'

services:
   wordpress:
     image: mcr.microsoft.com/azuredocs/multicontainerwordpress
     ports:
       - "8000:80"
     restart: always

Enregistrez vos modifications et quittez nano.Save your changes and exit nano. Utilisez la commande ^O pour enregistrer et ^X pour quitter.Use the command ^O to save and ^X to exit.

Mise à jour avec la nouvelle configurationUpdate app with new configuration

Dans Cloud Shell, reconfigurez votre application web multiconteneur avec la commande az webapp config container set.In Cloud Shell, reconfigure your multi-container web app with the az webapp config container set command. N’oubliez pas de remplacer <app-name> par le nom de l’application web créée précédemment.Don't forget to replace <app-name> with the name of the web app you created earlier.

az webapp config container set --resource-group myResourceGroup --name <app-name> --multicontainer-config-type compose --multicontainer-config-file docker-compose-wordpress.yml

Une fois l’application reconfigurée, Cloud Shell affiche des informations similaires à celles de l’exemple suivant :When the app has been reconfigured, Cloud Shell shows information similar to the following example:

[
  {
    "name": "DOCKER_CUSTOM_IMAGE_NAME",
    "value": "COMPOSE|dmVyc2lvbjogJzMuMycKCnNlcnZpY2VzOgogICB3b3JkcHJlc3M6CiAgICAgaW1hZ2U6IG1zYW5nYXB1L3dvcmRwcmVzcwogICAgIHBvcnRzOgogICAgICAgLSAiODAwMDo4MCIKICAgICByZXN0YXJ0OiBhbHdheXM="
  }
]

Accéder à l’applicationBrowse to the app

Accédez à l’application déployée dans (http://<app-name>.azurewebsites.net).Browse to the deployed app at (http://<app-name>.azurewebsites.net). L’application utilise maintenant Azure Database pour MySQL.The app is now using Azure Database for MySQL.

Exemple d’application multiconteneur sur Web App pour conteneurs

Ajout de stockage persistantAdd persistent storage

Votre conteneur à plusieurs applications s’exécute maintenant dans Web App pour conteneurs.Your multi-container is now running in Web App for Containers. Toutefois, si vous installez WordPress maintenant et redémarrez votre application plus tard, vous verrez que l’installation de WordPress a disparu.However, if you install WordPress now and restart your app later, you'll find that your WordPress installation is gone. Cela se produit parce que votre configuration Docker Compose pointe actuellement vers un emplacement de stockage à l’intérieur de votre conteneur.This happens because your Docker Compose configuration currently points to a storage location inside your container. Les fichiers installés dans le conteneur ne sont pas conservés après le redémarrage de l’application.The files installed into your container don't persist beyond app restart. Dans cette section, vous allez ajouter du stockage persistant à votre conteneur WordPress.In this section, you'll add persistent storage to your WordPress container.

Configuration des variables d’environnementConfigure environment variables

Pour utiliser le stockage persistant, vous devez activer ce paramètre dans App Service.To use persistent storage, you'll enable this setting within App Service. Pour faire cette modification, utilisez la commande az webapp config appsettings set dans Cloud Shell.To make this change, use the az webapp config appsettings set command in Cloud Shell. Les paramètres d’application respectent la casse et sont séparés par des espaces.App settings are case-sensitive and space-separated.

az webapp config appsettings set --resource-group myResourceGroup --name <app-name> --settings WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE

Une fois le paramètre d’application créé, Cloud Shell affiche des informations similaires à l’exemple suivant :When the app setting has been created, Cloud Shell shows information similar to the following example:

[
  < JSON data removed for brevity. >
  {
    "name": "WORDPRESS_DB_NAME",
    "slotSetting": false,
    "value": "wordpress"
  },
  {
    "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
    "slotSetting": false,
    "value": "TRUE"
  }
]

Modification du fichier de configurationModify configuration file

Dans Cloud Shell, tapez nano docker-compose-wordpress.yml pour ouvrir l’éditeur de texte nano.In the Cloud Shell, type nano docker-compose-wordpress.yml to open the nano text editor.

L’option volumes mappe le système de fichiers sur un répertoire dans le conteneur.The volumes option maps the file system to a directory within the container. ${WEBAPP_STORAGE_HOME} est une variable d’environnement d’App Service mappée sur le stockage persistant de votre application.${WEBAPP_STORAGE_HOME} is an environment variable in App Service that is mapped to persistent storage for your app. Vous allez utiliser cette variable d’environnement dans l’option des volumes pour que les fichiers WordPress soient installés dans le stockage persistant plutôt que dans le conteneur.You'll use this environment variable in the volumes option so that the WordPress files are installed into persistent storage instead of the container. Apportez les modifications suivantes au fichier :Make the following modifications to the file:

Dans la section wordpress, ajoutez une option volumes afin d’obtenir le code suivant :In the wordpress section, add a volumes option so it looks like the following code:

version: '3.3'

services:
   wordpress:
     image: mcr.microsoft.com/azuredocs/multicontainerwordpress
     volumes:
      - ${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html
     ports:
       - "8000:80"
     restart: always

Mise à jour avec la nouvelle configurationUpdate app with new configuration

Dans Cloud Shell, reconfigurez votre application web multiconteneur avec la commande az webapp config container set.In Cloud Shell, reconfigure your multi-container web app with the az webapp config container set command. N’oubliez pas de remplacer <app-name> par un nom d’application unique.Don't forget to replace <app-name> with a unique app name.

az webapp config container set --resource-group myResourceGroup --name <app-name> --multicontainer-config-type compose --multicontainer-config-file docker-compose-wordpress.yml

Après son exécution, la commande retourne un résultat semblable à l’exemple suivant :After your command runs, it shows output similar to the following example:

[
  {
    "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
    "slotSetting": false,
    "value": "TRUE"
  },
  {
    "name": "DOCKER_CUSTOM_IMAGE_NAME",
    "value": "COMPOSE|dmVyc2lvbjogJzMuMycKCnNlcnZpY2VzOgogICBteXNxbDoKICAgICBpbWFnZTogbXlzcWw6NS43CiAgICAgdm9sdW1lczoKICAgICAgIC0gZGJfZGF0YTovdmFyL2xpYi9teXNxbAogICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgIGVudmlyb25tZW50OgogICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogZXhhbXBsZXBhc3MKCiAgIHdvcmRwcmVzczoKICAgICBkZXBlbmRzX29uOgogICAgICAgLSBteXNxbAogICAgIGltYWdlOiB3b3JkcHJlc3M6bGF0ZXN0CiAgICAgcG9ydHM6CiAgICAgICAtICI4MDAwOjgwIgogICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgIGVudmlyb25tZW50OgogICAgICAgV09SRFBSRVNTX0RCX1BBU1NXT1JEOiBleGFtcGxlcGFzcwp2b2x1bWVzOgogICAgZGJfZGF0YTo="
  }
]

Accéder à l’applicationBrowse to the app

Accédez à l’application déployée dans (http://<app-name>.azurewebsites.net).Browse to the deployed app at (http://<app-name>.azurewebsites.net).

Le conteneur WordPress utilise maintenant Azure Database pour MySQL et le stockage persistant.The WordPress container is now using Azure Database for MySQL and persistent storage.

Ajout d’un conteneur RedisAdd Redis container

« L’image officielle » de WordPress n’inclut pas les dépendances pour Redis.The WordPress 'official image' does not include the dependencies for Redis. Ces dépendances et la configuration supplémentaire requise pour utiliser Redis avec WordPress ont été préparées pour vous dans cette image personnalisée.These dependencies and additional configuration needed to use Redis with WordPress have been prepared for you in this custom image. En pratique, vous devez ajouter les modifications souhaitées à votre propre image.In practice, you would add desired changes to your own image.

L’image personnalisée est basée sur « l’image officielle » de WordPress provenant du Hub Docker.The custom image is based on the 'official image' of WordPress from Docker Hub. Les modifications suivantes ont été apportées dans cette image personnalisée pour Redis :The following changes have been made in this custom image for Redis:

Ajoutez le conteneur redis en bas du fichier de configuration afin qu’il ressemble à l’exemple suivant :Add the redis container to the bottom of the configuration file so it looks like the following example:

version: '3.3'

services:
   wordpress:
     image: mcr.microsoft.com/azuredocs/multicontainerwordpress
     ports:
       - "8000:80"
     restart: always

   redis:
     image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
     environment: 
      - ALLOW_EMPTY_PASSWORD=yes
     restart: always

Configuration des variables d’environnementConfigure environment variables

Pour utiliser Redis, vous devez allez devoir activer ce paramètre, WP_REDIS_HOST, dans App Service.To use Redis, you'll enable this setting, WP_REDIS_HOST, within App Service. Pour que WordPress communique avec l’hôte Redis, ce paramètre est obligatoire.This is a required setting for WordPress to communicate with the Redis host. Pour faire cette modification, utilisez la commande az webapp config appsettings set dans Cloud Shell.To make this change, use the az webapp config appsettings set command in Cloud Shell. Les paramètres d’application respectent la casse et sont séparés par des espaces.App settings are case-sensitive and space-separated.

az webapp config appsettings set --resource-group myResourceGroup --name <app-name> --settings WP_REDIS_HOST="redis"

Une fois le paramètre d’application créé, Cloud Shell affiche des informations similaires à l’exemple suivant :When the app setting has been created, Cloud Shell shows information similar to the following example:

[
  < JSON data removed for brevity. >
  {
    "name": "WORDPRESS_DB_USER",
    "slotSetting": false,
    "value": "adminuser@<mysql-server-name>"
  },
  {
    "name": "WP_REDIS_HOST",
    "slotSetting": false,
    "value": "redis"
  }
]

Mise à jour avec la nouvelle configurationUpdate app with new configuration

Dans Cloud Shell, reconfigurez votre application web multiconteneur avec la commande az webapp config container set.In Cloud Shell, reconfigure your multi-container web app with the az webapp config container set command. N’oubliez pas de remplacer <app-name> par un nom d’application unique.Don't forget to replace <app-name> with a unique app name.

az webapp config container set --resource-group myResourceGroup --name <app-name> --multicontainer-config-type compose --multicontainer-config-file compose-wordpress.yml

Après son exécution, la commande retourne un résultat semblable à l’exemple suivant :After your command runs, it shows output similar to the following example:

[
  {
    "name": "DOCKER_CUSTOM_IMAGE_NAME",
    "value": "COMPOSE|dmVyc2lvbjogJzMuMycKCnNlcnZpY2VzOgogICBteXNxbDoKICAgICBpbWFnZTogbXlzcWw6NS43CiAgICAgdm9sdW1lczoKICAgICAgIC0gZGJfZGF0YTovdmFyL2xpYi9teXNxbAogICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgIGVudmlyb25tZW50OgogICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogZXhhbXBsZXBhc3MKCiAgIHdvcmRwcmVzczoKICAgICBkZXBlbmRzX29uOgogICAgICAgLSBteXNxbAogICAgIGltYWdlOiB3b3JkcHJlc3M6bGF0ZXN0CiAgICAgcG9ydHM6CiAgICAgICAtICI4MDAwOjgwIgogICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgIGVudmlyb25tZW50OgogICAgICAgV09SRFBSRVNTX0RCX1BBU1NXT1JEOiBleGFtcGxlcGFzcwp2b2x1bWVzOgogICAgZGJfZGF0YTo="
  }
]

Accéder à l’applicationBrowse to the app

Accédez à l’application déployée dans (http://<app-name>.azurewebsites.net).Browse to the deployed app at (http://<app-name>.azurewebsites.net).

Suivez la procédure et installez WordPress.Complete the steps and install WordPress.

Connexion de WordPress à RedisConnect WordPress to Redis

Connectez-vous à l’interface d’administration de WordPress. Dans le volet de navigation gauche, sélectionnez Plugins (Extensions), puis sélectionnez Installed Plugins (Extensions installées).Sign in to WordPress admin. In the left navigation, select Plugins, and then select Installed Plugins.

Sélection des extensions WordPress

Afficher toutes les extensions iciShow all plugins here

Dans la page des extensions, recherchez Redis Object Cache et cliquez sur Activate (Activer).In the plugins page, find Redis Object Cache and click Activate.

Activation de Redis

Cliquez sur Paramètres.Click on Settings.

Cliquez sur Settings (Paramètres)

Cliquez sur le bouton Enable Object Cache (Activer Object Cache).Click the Enable Object Cache button.

Cliquez sur le bouton Enable Object Cache (Activer Object Cache).

WordPress se connecte au serveur Redis.WordPress connects to the Redis server. L’état de la connexion apparaît sur la même page.The connection status appears on the same page.

WordPress se connecte au serveur Redis.

Félicitations, vous avez connecté WordPress à Redis.Congratulations, you've connected WordPress to Redis. L’application prête pour la production utilise maintenant Azure Database pour MySQL, le stockage persistant et Redis.The production-ready app is now using Azure Database for MySQL, persistent storage, and Redis. Vous pouvez maintenant effectuer un scale-out de votre plan App Service à plusieurs instances.You can now scale out your App Service Plan to multiple instances.

Recherche des journaux d’activité de conteneur DockerFind Docker Container logs

Si vous rencontrez des problèmes avec l’utilisation de plusieurs conteneurs, vous pouvez accéder aux journaux d’activité dans : https://<app-name>.scm.azurewebsites.net/api/logs/docker.If you run into issues using multiple containers, you can access the container logs by browsing to: https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Le résultat ressemble à l’exemple suivant :You'll see output similar to the following example:

[
   {
      "machineName":"RD00XYZYZE567A",
      "lastUpdated":"2018-05-10T04:11:45Z",
      "size":25125,
      "href":"https://<app-name>.scm.azurewebsites.net/api/vfs/LogFiles/2018_05_10_RD00XYZYZE567A_docker.log",
      "path":"/home/LogFiles/2018_05_10_RD00XYZYZE567A_docker.log"
   }
]

Vous voyez un journal pour chaque conteneur et un journal supplémentaire pour le processus parent.You see a log for each container and an additional log for the parent process. Copiez la valeur href respective dans le navigateur pour afficher le journal.Copy the respective href value into the browser to view the log.

Nettoyer le déploiementClean up deployment

Une fois l’exemple de script exécuté, la commande suivante permet de supprimer le groupe de ressources et toutes les ressources associées.After the sample script has been run, the following command can be used to remove the resource group and all resources associated with it.

az group delete --name myResourceGroup

Étapes suivantesNext steps

Dans ce didacticiel, vous avez appris à :In this tutorial, you learned how to:

  • Convertir une configuration Docker Compose pour travailler avec Web App pour conteneursConvert a Docker Compose configuration to work with Web App for Containers
  • Déployer une application à plusieurs conteneurs vers AzureDeploy a multi-container app to Azure
  • Ajouter des paramètres d’applicationAdd application settings
  • Utiliser le stockage persistant pour vos conteneursUse persistent storage for your containers
  • Se connecter à la base de données Azure pour MySQLConnect to Azure Database for MySQL
  • Résoudre les erreursTroubleshoot errors

Passez au didacticiel suivant pour découvrir comment mapper un nom DNS personnalisé à votre application.Advance to the next tutorial to learn how to map a custom DNS name to your app.

Ou consultez les autres ressources :Or, check out other resources: