Créez un package WAR ou JAR pour votre application à l'aide d'outils de développement locaux, générez une image Docker basée sur ce package, puis transférez-la vers un registre d'images Alibaba Cloud afin de déployer l'application. EDAS fournit des images de base préconfigurées pour trois frameworks d'application : HSF (High-speed Service Framework), Spring Cloud et Dubbo. Il vous suffit donc de rédiger un fichier Dockerfile minimal qui copie votre package WAR ou JAR dans l'image.
Chaque image de base intègre une combinaison spécifique de système d'exploitation, de JDK et de Tomcat. Les images de base HSF incluent également le conteneur middleware Pandora.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une installation locale de Docker
Un package d'application WAR ou JAR prêt à être déployé
Une instance Alibaba Cloud Container Registry avec un dépôt d'images configuré
Pour plus d'informations sur les variables d'environnement injectées par EDAS au moment de l'exécution, consultez la section Variables d'environnement d'exécution.
Choisir une image de base
Sélectionnez une image de base adaptée à votre framework d'application et à vos besoins d'exécution.
| Image de base | Java | Tomcat | Pandora | Cas d'utilisation |
|---|---|---|---|---|
apaas/edas |
OpenJDK 1.8 | 8.5.78 | N/A | Spring Cloud ou Dubbo (alias pour edas-centos-openjdk8-tomcat8) |
apaas/edas-centos-openjdk8-tomcat8 |
OpenJDK 1.8 | 8.5.78 | N/A | Spring Cloud ou Dubbo sur Tomcat 8.x |
apaas/edas-centos-openjdk8-tomcat7 |
OpenJDK 1.8 | 7.0.93 | N/A | Spring Cloud ou Dubbo sur Tomcat 7.x |
apaas/edas-centos-openjdk8-alitomcat8 |
OpenJDK 1.8 | 8.5.37 | 3.5.9 | HSF sur Ali-Tomcat 8.x |
apaas/edas-centos-openjdk8-alitomcat7 |
OpenJDK 1.8 | 7.0.92 | 3.5.9 | HSF sur Ali-Tomcat 7.x |
apaas/edas-centos-openjdk8-alitomcat8-v4 |
OpenJDK 1.8 | 8.5.37 | 4.0.2 | HSF 4.0 sur Ali-Tomcat 8.x |
apaas/edas-centos-openjdk8-alitomcat7-v4 |
OpenJDK 1.8 | 7.0.92 | 4.0.2 | HSF 4.0 sur Ali-Tomcat 7.x |
apaas/edas-centos7-openjdk17-tomcat9 |
OpenJDK 17 | 9.0.70 | N/A | OpenJDK 17 + Tomcat 9 |
apaas/edas-centos7-openjdk17-tomcat10 |
OpenJDK 17 | 10.1.41 | N/A | OpenJDK 17 + Tomcat 10 |
Toutes les images sont hébergées à l'adresse apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/ et s'exécutent sur CentOS 7. Le tag par défaut est latest.
Pour découvrir d'autres images, rendez-vous sur le Docker Hub aPaaS. Pour obtenir une assistance technique, rejoignez le groupe DingTalk dont l'ID est 31723701. Les fichiers Dockerfile sources utilisés pour générer ces images de base sont disponibles dans le dépôt alibabacloud-edas-dockerfile-demo sur GitHub.
Rédiger un Dockerfile
Un Dockerfile définit les instructions nécessaires à la construction de votre image d'application. Les images de base EDAS intègrent déjà le JDK, Tomcat et les scripts de démarrage ; le Dockerfile n'a donc qu'à copier votre package d'application dans l'image.
Applications HSF
Les applications HSF nécessitent une image de base Ali-Tomcat incluant le conteneur middleware Pandora.
# Base: CentOS 7 + OpenJDK 8 + Ali-Tomcat 7 + Pandora 3.5.9
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat7:latest
MAINTAINER Alibaba Cloud EDAS Team<edas-**@list.alibaba-inc.com>
ENV TZ="Asia/Shanghai"
# Application directory inside the container
ENV APP_HOME /home/admin/app/
##### Deploy a JAR file (default)
ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/HSF_PROVIDER.jar
##### Deploy a WAR file -- uncomment the line below and comment out the JAR line
#ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/HSF_PROVIDER.war
##### Deploy from local storage -- uncomment and set the path to your local file
#ARG APP_LOCATION=/path/to/your/HSF_PROVIDER.war
# Copy the application package into the container
ADD ${APP_LOCATION} ${APP_HOME}/
# The startup script and working directory are provided by the base image.
# Entry point: /home/admin/bin/start.sh
# Working directory: /home/admin
Applications Spring Cloud ou Dubbo
Les applications Spring Cloud et Dubbo utilisent l'image de base EDAS standard (sans Pandora).
# Base: CentOS 7 + OpenJDK 8 + Tomcat 8
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# Application directory inside the container
ENV APP_HOME /home/admin/app/
##### Deploy a JAR file (default)
ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/DUBBO_PROVIDER.jar
##### Deploy a WAR file -- uncomment the line below and comment out the JAR line
#ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/DUBBO_PROVIDER.war
##### Deploy from local storage -- uncomment and set the path to your local file
#ARG APP_LOCATION=/path/to/your/SPRING_CLOUD_PROVIDER.war
# Copy the application package into the container
ADD ${APP_LOCATION} ${APP_HOME}/
Personnaliser l'image
Après avoir créé le Dockerfile de base, appliquez les personnalisations souhaitées parmi celles présentées ci-dessous.
Mettre à niveau OpenJDK
Installez directement une version plus récente du JDK dans le Dockerfile. EDAS prend en charge jusqu'à OpenJDK 21 pour les images personnalisées.
L'exemple suivant remplace OpenJDK 8 préinstallé par OpenJDK 9 :
# Remove the pre-installed JDK and install OpenJDK 9
RUN yum erase -y java; yum -y install java-1.9.0-openjdk-devel
Mettre à niveau la version du conteneur EDAS (HSF uniquement)
Pour les applications HSF exécutées dans des clusters ACK, mettez à jour les versions de Pandora et d'Ali-Tomcat afin de bénéficier des nouvelles fonctionnalités ou correctifs du middleware.
Connectez-vous à la console EDAS.
Dans le volet de navigation de gauche, sélectionnez Application Management > Applications.
Sur la page Applications, cliquez sur Create Application. Dans la section Application Runtime Environment de l'étape Basic Information, repérez les valeurs disponibles pour Pandora Version et Ali-Tomcat Version.
-
Définissez la version cible dans le Dockerfile. Par exemple, pour mettre à niveau vers Pandora 3.5.4 :
# Upgrade the Pandora version ENV UPGRADED_CONTAINER_VERSION 3.5.4 RUN /home/admin/bin/upgradecontainer.sh Reconstruisez et transférez l'image.
Définir les paramètres de démarrage JVM
Transmettez les paramètres JVM via la variable d'environnement JAVA_OPTS :
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# Set JVM memory parameters
ENV JAVA_OPTS="\
-Xmx3550m \
-Xms3550m \
-Xmn2g \
-Xss128k"
Configurer les paramètres Spring Boot
Pour les applications FatJar, modifiez les paramètres de démarrage de Tomcat via la variable d'environnement APP_ARGS. L'image de base utilise les valeurs par défaut suivantes :
| Paramètre | Valeur par défaut |
|---|---|
| Context path | / |
| Encodage URI | ISO-8859-1 |
| Port | 8080 |
| Nombre maximal de threads Tomcat | 400 |
Remplacez ces valeurs par défaut si nécessaire :
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# Override Spring Boot defaults
ENV APP_ARGS="--server.context-path=/ \
--server.tomcat.uri-encoding=ISO-8859-1 \
--server.port=8080 \
--server.tomcat.max-threads=400"
Construire et transférer l'image
Construire l'image
Ouvrez un terminal et accédez au répertoire contenant votre Dockerfile.
-
Exécutez la commande
docker buildpour créer l'image. Exemple : si votre Dockerfile porte un nom non standard ou se trouve à un emplacement différent, spécifiez-le avec l'option-f:docker build -t <app-name>:<version> .docker build -t hsf-provider:1.0.0 .docker build -t hsf-provider:1.0.0 -f /path/to/custom_dockerfile . -
Vérifiez que l'image a bien été créée :
docker images | grep hsf-provider
Transférer l'image vers Container Registry
Une fois l'image construite, transférez-la vers Alibaba Cloud Container Registry.
Configurer un dépôt
Connectez-vous à la console Container Registry.
Sur la page Instances, basculez vers la région où votre application EDAS est exécutée (ou celle où vous prévoyez de la créer).
Sélectionnez une instance, puis cliquez sur Repositories dans le volet de navigation de gauche.
Sélectionnez un dépôt existant ou créez-en un nouveau. Utilisez le nom de l'application comme nom de dépôt pour faciliter son identification.
Transférer l'image
Exécutez les commandes suivantes. Remplacez les espaces réservés par vos valeurs réelles.
| Espace réservé | Description | Exemple |
|---|---|---|
<username> |
Nom d'utilisateur de connexion à Container Registry | td****@gmail.com |
<region-id> |
Région de votre instance Container Registry | cn-hangzhou |
<image-id> |
ID de l'image locale obtenu via docker images |
2b64f63601a7 |
<namespace> |
Namespace Container Registry | webapps |
<repository> |
Nom du dépôt | hsf-provider |
<version> |
Tag de version de l'image | 1.0.0 |
# Step 1: Log in to Container Registry
# Enter the fixed or temporary password for the default instance in Container Registry, not your Alibaba Cloud account password.
docker login --username=<username> registry.<region-id>.aliyuncs.com
# Step 2: Tag the image
docker tag <image-id> registry.<region-id>.aliyuncs.com/<namespace>/<repository>:<version>
# Step 3: Push the image
docker push registry.<region-id>.aliyuncs.com/<namespace>/<repository>:<version>
Exemple :
docker login --username=td****@gmail.com registry.cn-hangzhou.aliyuncs.com
docker tag 2b64f63601a7 registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0

Pour accélérer le réseau d'un dépôt d'images Alibaba Cloud, procédez comme suit : connectez-vous à la console Container Registry. Dans le volet de navigation de gauche, cliquez sur Image Tool, puis sur Image Accelerator. Sur la page Image Accelerator, récupérez la valeur du paramètre Booster URL.
Accélérer le téléchargement des images avec Image Accelerator
Connectez-vous à la console Container Registry.
Dans le volet de navigation de gauche, cliquez sur Image Tool, puis sur Image Accelerator.
Sur la page Image Accelerator, récupérez l'URL indiquée sous Booster URL.
Variables d'environnement d'exécution
EDAS injecte des variables d'environnement dans chaque pod via un ConfigMap Kubernetes nommé edas-envs. Ne remplacez pas ces valeurs.
Variables de configuration du service
| Variable d'environnement | Type | Description |
|---|---|---|
EDAS_ADDRESS_SERVER_DOMAIN |
String | Nom de domaine ou adresse IP du centre de configuration |
EDAS_ADDRESS_SERVER_PORT |
String | Port du centre de configuration |
EDAS_CONFIGSERVER_CLIENT_PORT |
String | Port de ConfigServer |
Variables d'exécution de l'application
| Variable d'environnement | Type | Description |
|---|---|---|
POD_IP |
String | Adresse IP du pod |
EDAS_APP_ID |
String | ID de l'application EDAS |
EDAS_PROJECT_NAME |
String | Identique à EDAS_APP_ID ; utilisé pour l'analyse des traces |
EDAS_JM_CONTAINER_ID |
String | Identique à EDAS_ECC_ID ; utilisé pour l'analyse des traces |
EDAS_CATALINA_OPTS |
String | Paramètres CATALINA_OPTS pour l'exécution du middleware |
CATALINA_OPTS |
String | Identique à EDAS_CATALINA_OPTS ; paramètre de démarrage Tomcat par défaut |
CATALINA_HOME |
String | Chemin d'installation de Tomcat |
PANDORA_LOCATION |
String | Chemin d'installation de Pandora (applications HSF uniquement) |
N'utilisez pas le fichier /home/admin/.spas_key/default. EDAS écrase ce fichier au démarrage du pod.