Puede crear un paquete WAR o JAR para una aplicación mediante herramientas de desarrollo locales. Después, cree una imagen de docker basada en ese paquete y cárguela en un repositorio de imágenes de Alibaba Cloud para desplegar la aplicación. EDAS proporciona imágenes base precompiladas para tres frameworks de aplicaciones: HSF (High-speed Service Framework), Spring Cloud y Dubbo. Por lo tanto, solo necesita escribir un Dockerfile mínimo que copie su paquete WAR o JAR dentro de la imagen.
Cada imagen base incluye una combinación específica de sistema operativo, JDK y Tomcat. Las imágenes base de HSF también incluyen el contenedor de middleware Pandora.
Requisitos previos
Antes de empezar, compruebe que cuenta con lo siguiente:
Una instalación local de docker
Un paquete de aplicación WAR o JAR listo para el despliegue
Una instancia de Alibaba Cloud Container Registry con un repositorio de imágenes
Para obtener información sobre las variables de entorno que EDAS inyecta durante la ejecución, consulte Runtime environment variables.
Elegir una imagen base
Seleccione una imagen base según el framework de su aplicación y sus requisitos de ejecución.
|
Imagen base |
Java |
Tomcat |
Pandora |
Caso de uso |
|
|
OpenJDK 1.8 |
8.5.78 |
N/A |
Spring Cloud o Dubbo (alias de |
|
|
OpenJDK 1.8 |
8.5.78 |
N/A |
Spring Cloud o Dubbo en Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.93 |
N/A |
Spring Cloud o Dubbo en Tomcat 7.x |
|
|
OpenJDK 1.8 |
8.5.37 |
3.5.9 |
HSF en Ali-Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.92 |
3.5.9 |
HSF en Ali-Tomcat 7.x |
|
|
OpenJDK 1.8 |
8.5.37 |
4.0.2 |
HSF 4.0 en Ali-Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.92 |
4.0.2 |
HSF 4.0 en Ali-Tomcat 7.x |
|
|
OpenJDK 17 |
9.0.70 |
N/A |
OpenJDK 17 + Tomcat 9 |
|
|
OpenJDK 17 |
10.1.41 |
N/A |
OpenJDK 17 + Tomcat 10 |
Todas las imágenes se alojan en apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/ y se ejecutan en CentOS 7. La etiqueta más reciente es latest.
Para consultar más imágenes, visite aPaaS Docker Hub. Si requiere asistencia técnica, únase al grupo de DingTalk con el identificador 31723701. Para revisar los archivos Dockerfile originales de estas imágenes base, consulte el repositorio alibabacloud-edas-dockerfile-demo en GitHub.
Escribir un Dockerfile
Un Dockerfile define las instrucciones para compilar la imagen de su aplicación. Las imágenes base de EDAS ya incluyen el JDK, Tomcat y los scripts de inicio, por lo que el Dockerfile solo necesita copiar el paquete de la aplicación dentro de la imagen.
Aplicaciones HSF
Las aplicaciones HSF requieren una imagen base de Ali-Tomcat con el contenedor de 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
Aplicaciones Spring Cloud o Dubbo
Las aplicaciones Spring Cloud y Dubbo utilizan la imagen base estándar de EDAS (sin 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}/
Personalizar la imagen
Después de crear un Dockerfile base, aplique cualquiera de las siguientes personalizaciones.
Actualizar OpenJDK
Instale una versión más reciente del JDK directamente en el Dockerfile. EDAS admite hasta OpenJDK 21 para imágenes personalizadas.
A continuación se muestra un ejemplo que reemplaza OpenJDK 8, instalado previamente, por 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
Actualizar la versión de EDAS Container (solo HSF)
En las aplicaciones HSF alojadas en clústeres ACK, actualice las versiones de Pandora y Ali-Tomcat para acceder a nuevas funciones o correcciones del middleware.
Inicie sesión en la consola de EDAS.
En el panel de navegación izquierdo, vaya a Application Management > Applications.
En la página Applications, haga clic en Create Application. En la sección Application Runtime Environment del paso Basic Information, busque los valores disponibles de Pandora Version y Ali-Tomcat Version.
-
Establezca la versión de destino en el Dockerfile. Por ejemplo, para actualizar a Pandora 3.5.4:
# Upgrade the Pandora version ENV UPGRADED_CONTAINER_VERSION 3.5.4 RUN /home/admin/bin/upgradecontainer.sh Recompile y envíe la imagen.
Establecer parámetros de inicio de JVM
Pase los parámetros de JVM mediante la variable de entorno JAVA_OPTS:
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# Set JVM memory parameters
ENV JAVA_OPTS="\
-Xmx3550m \
-Xms3550m \
-Xmn2g \
-Xss128k"
Configurar los ajustes de Spring Boot
Para las aplicaciones FatJar, modifique los ajustes de inicio de Tomcat mediante la variable de entorno APP_ARGS. La imagen base utiliza los siguientes valores predeterminados:
|
Parámetro |
Valor predeterminado |
|
Ruta de contexto |
|
|
Codificación de URI |
ISO-8859-1 |
|
Puerto |
8080 |
|
Número máximo de subprocesos de Tomcat |
400 |
Modifique estos valores predeterminados según sea necesario:
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"
Compilar y enviar la imagen
Compilar la imagen
Abra una terminal y vaya al directorio que contiene su Dockerfile.
-
Ejecute
docker buildpara crear la imagen: Ejemplo: si su Dockerfile tiene un nombre o una ubicación distintos a los predeterminados, especifíquelo con la marca-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 . -
Compruebe que la imagen se haya creado:
docker images | grep hsf-provider
Enviar la imagen a Container Registry
Una vez compilada la imagen, envíela a Alibaba Cloud Container Registry.
Configurar un repositorio
Inicie sesión en la consola de Container Registry.
En la página Instances, cambie a la región donde se ejecuta su aplicación de EDAS (o donde planea crearla).
Seleccione una instancia y luego haga clic en Repositories en el panel de navegación izquierdo.
Seleccione un repositorio existente o cree uno. Utilice el nombre de la aplicación como nombre del repositorio para identificarlo fácilmente.
Enviar la imagen
Ejecute los siguientes comandos. Reemplace los marcadores de posición con sus valores reales.
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
Nombre de usuario para iniciar sesión en Container Registry |
|
|
|
Región de su instancia de Container Registry |
|
|
|
Identificador de la imagen local obtenido con |
|
|
|
Espacio de nombres de Container Registry |
|
|
|
Nombre del repositorio |
|
|
|
Etiqueta de versión de la imagen |
|
# 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>
Ejemplo:
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

Para acelerar la red de un repositorio de imágenes de Alibaba Cloud, siga estos pasos: Inicie sesión en la consola de Container Registry. En el panel de navegación izquierdo, haga clic en Image Tool. Luego, haga clic en Image Accelerator. En la página Image Accelerator, obtenga el valor del parámetro Booster URL.
Acelerar la descarga de imágenes con Image Accelerator
Inicie sesión en la consola de Container Registry.
En el panel de navegación izquierdo, haga clic en Image Tool y luego en Image Accelerator.
En la página Image Accelerator, obtenga el valor de Booster URL.
Variables de entorno de ejecución
EDAS inyecta variables de entorno en cada pod mediante un ConfigMap de Kubernetes llamado edas-envs. No sobrescriba estos valores.
Variables de configuración del servicio
|
Variable de entorno |
Tipo |
Descripción |
|
|
String |
Nombre de dominio o dirección IP del centro de configuración |
|
|
String |
Puerto del centro de configuración |
|
|
String |
Puerto de ConfigServer |
Variables de ejecución de la aplicación
|
Variable de entorno |
Tipo |
Descripción |
|
|
String |
Dirección IP del pod |
|
|
String |
Identificador de la aplicación en EDAS |
|
|
String |
Igual que |
|
|
String |
Igual que |
|
|
String |
Parámetros |
|
|
String |
Igual que |
|
|
String |
Ruta de instalación de Tomcat |
|
|
String |
Ruta de instalación de Pandora (solo para aplicaciones HSF) |
No utilice el archivo /home/admin/.spas_key/default. EDAS sobrescribe este archivo cuando se inicia el pod.