Crie um pacote WAR ou JAR para sua aplicação com ferramentas de desenvolvimento locais. Em seguida, gere uma imagem docker baseada nesse pacote e envie-a para um repositório de imagens do Alibaba Cloud para implantar a aplicação. O EDAS oferece imagens base pré-construídas para três frameworks de aplicação — HSF (High-speed Service Framework), Spring Cloud e Dubbo —, o que permite escrever um Dockerfile mínimo apenas para copiar o pacote WAR ou JAR para a imagem.
Cada imagem base inclui uma combinação específica de sistema operacional, JDK e Tomcat. As imagens base do HSF também contêm o container de middleware Pandora.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instalação local do docker
Um pacote de aplicação WAR ou JAR pronto para implantação
Uma instância do Alibaba Cloud Container Registry com um repositório de imagens
Para obter informações sobre as variáveis de ambiente injetadas pelo EDAS durante a execução, consulte Variáveis de ambiente de execução.
Escolha uma imagem base
Selecione uma imagem base conforme o framework da aplicação e os requisitos de tempo de execução.
|
Imagem base |
Java |
Tomcat |
Pandora |
Caso de uso |
|
|
OpenJDK 1.8 |
8.5.78 |
N/A |
Spring Cloud ou Dubbo (alias para |
|
|
OpenJDK 1.8 |
8.5.78 |
N/A |
Spring Cloud ou Dubbo no Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.93 |
N/A |
Spring Cloud ou Dubbo no Tomcat 7.x |
|
|
OpenJDK 1.8 |
8.5.37 |
3.5.9 |
HSF no Ali-Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.92 |
3.5.9 |
HSF no Ali-Tomcat 7.x |
|
|
OpenJDK 1.8 |
8.5.37 |
4.0.2 |
HSF 4.0 no Ali-Tomcat 8.x |
|
|
OpenJDK 1.8 |
7.0.92 |
4.0.2 |
HSF 4.0 no 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 as imagens estão hospedadas em apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/ e executam no CentOS 7. A tag mais recente é latest.
Para acessar mais imagens, visite o aPaaS docker Hub. Para suporte técnico, entre no grupo do DingTalk com o ID 31723701. Para visualizar os Dockerfiles de source dessas imagens base, consulte o repositório alibabacloud-edas-dockerfile-demo no GitHub.
Escrever um Dockerfile
Um Dockerfile define as instruções para montar a imagem da aplicação. Como as imagens base do EDAS já incluem JDK, Tomcat e scripts de inicialização, o Dockerfile precisa apenas copiar o pacote da aplicação para a imagem.
Aplicações HSF
Aplicações HSF exigem uma imagem base Ali-Tomcat com o container 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
Aplicações Spring Cloud ou Dubbo
Aplicações Spring Cloud e Dubbo utilizam a imagem base padrão do EDAS (sem 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 a imagem
Após criar um Dockerfile base, aplique qualquer uma das personalizações abaixo.
Atualizar o OpenJDK
Instale uma versão mais recente do JDK diretamente no Dockerfile. O EDAS suporta até o OpenJDK 21 para imagens personalizadas.
O exemplo a seguir substitui o OpenJDK 8 pré-instalado pelo 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
Atualizar a versão do EDAS Container (apenas HSF)
Para aplicações HSF em clusters ACK, atualize as versões do Pandora e do Ali-Tomcat para acessar novos recursos ou correções do middleware.
Faça login no console do EDAS.
No painel de navegação à esquerda, escolha Application Management > Applications.
Na página Applications, clique em Create Application. Na seção Application Runtime Environment da etapa Basic Information, localize os valores disponíveis para Pandora Version e Ali-Tomcat Version.
-
Defina a versão desejada no Dockerfile. Por exemplo, para atualizar para o Pandora 3.5.4:
# Upgrade the Pandora version ENV UPGRADED_CONTAINER_VERSION 3.5.4 RUN /home/admin/bin/upgradecontainer.sh Reconstrua e envie a imagem.
Definir parâmetros de inicialização da JVM
Transmita os parâmetros da JVM pela variável de ambiente JAVA_OPTS:
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# Set JVM memory parameters
ENV JAVA_OPTS="\
-Xmx3550m \
-Xms3550m \
-Xmn2g \
-Xss128k"
Configure definições do Spring Boot
Para aplicações FatJar, modifique as configurações de inicialização do Tomcat pela variável de ambiente APP_ARGS. A imagem base utiliza os seguintes padrões:
|
Parâmetro |
Padrão |
|
Caminho de contexto |
|
|
Codificação URI |
ISO-8859-1 |
|
Porta |
8080 |
|
Máximo de threads do Tomcat |
400 |
Substitua esses valores padrão conforme necessário:
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 e enviar a imagem
Compilar a imagem
Abra um terminal e acesse o diretório que contém o Dockerfile.
-
Execute
docker buildpara crie a imagem. Exemplo: Se o Dockerfile tiver um nome ou localização não padrão, especifique-o com a flag-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 . -
Verifique se a imagem foi criada:
docker images | grep hsf-provider
Enviar a imagem para o Container Registry
Após compilar a imagem, envie-a para o Alibaba Cloud Container Registry.
Configure um repositório
Faça login no console do Container Registry.
Na página Instances, mude para a região onde a aplicação EDAS está em execução (ou onde você planeja crie uma).
Selecione uma instância e clique em Repositories no painel de navegação à esquerda.
Escolha um repositório existente ou crie um novo. Use o nome da aplicação como nome do repositório para facilitar a identificação.
Enviar a imagem
Execute os comandos a seguir. Substitua os placeholders pelos valores reais.
|
Placeholder |
Descrição |
Exemplo |
|
|
Nome de usuário de login do Container Registry |
|
|
|
Região da instância do Container Registry |
|
|
|
ID da imagem local obtido via |
|
|
|
Namespace do Container Registry |
|
|
|
Nome do repositório |
|
|
|
Tag de versão da imagem |
|
# 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>
Exemplo:
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 a rede de um repositório de imagens do Alibaba Cloud, siga estas etapas: Faça login no console do Container Registry. No painel de navegação à esquerda, clique em Image Tool. Em seguida, clique em Image Accelerator. Na página Image Accelerator, obtenha o valor do parâmetro Booster URL.
Acelerar o pull de imagens com o Image Accelerator
Faça login no console do Container Registry.
No painel de navegação à esquerda, clique em Image Tool e depois em Image Accelerator.
Na página Image Accelerator, obtenha a Booster URL.
Variáveis de ambiente de execução
O EDAS injeta variáveis de ambiente em cada pod por meio de um ConfigMap do Kubernetes chamado edas-envs. Não sobrescreva esses valores.
Variáveis de configuração de serviço
|
Variável de ambiente |
Tipo |
Descrição |
|
|
String |
Nome de domínio ou endereço IP do centro de configuração |
|
|
String |
Porta do centro de configuração |
|
|
String |
Porta do ConfigServer |
Variáveis de execução da aplicação
|
Variável de ambiente |
Tipo |
Descrição |
|
|
String |
Endereço IP do pod |
|
|
String |
ID da aplicação EDAS |
|
EDAS_ECC_ID |
String |
ID ECC do EDAS. |
|
|
String |
Igual a |
|
|
String |
Igual a |
|
|
String |
Parâmetros |
|
|
String |
Igual a |
|
|
String |
Caminho de instalação do Tomcat |
|
|
String |
Caminho de instalação do Pandora (apenas aplicações HSF) |
Não use o arquivo /home/admin/.spas_key/default. O EDAS sobrescreve esse arquivo quando o pod é iniciado.