Observação:

Implantar aplicativos Java no Ampere A1 no Oracle Cloud Infrastructure

Saiba como criar e implantar aplicativos Java como contêineres na plataforma de computação Ampere A1 no Oracle Cloud Infrastructure(OCI). Você implantará um aplicativo de tarefas com um banco de dados, como contêineres executados na plataforma de computação Ampere A1. Além disso, você usará o novo conjunto de ferramentas de contêiner, como Podman, disponíveis no Oracle Linux 8.0.

Introdução

Objetivos

Neste tutorial, você vai:

Pré-requisitos

  1. Uma Conta no Cloud do Oracle Free Tier (Trial), Paga ou LiveLabs.
  2. Familiaridade com a console do OCI
  3. Visão Geral do Networking
  4. Familiaridade com Compartimentos
  5. Conhecimento conceitual básico de contêineres e Podman
  6. Mantenha as chaves SSH úteis. Se você não tiver chaves, gere chaves SSH.

Configurar seu Ambiente

Comece iniciando o ambiente de nuvem Oracle que será usado para criar e implantar seu aplicativo Java EE. Esse ambiente estará contido em um Compartimento da nuvem, e a comunicação dentro do Compartimento será por meio de uma VCN (Rede Virtual na Nuvem). O Compartimento e a VCN isolarão e protegerão o ambiente geral. Você implantará uma instância de computação Ampere A1 para hospedar um aplicativo Java EE usando os contêineres de servidores Tomcat 9.0 e MySQL.

Configuração da Infraestrutura Básica

  1. Abra o menu de navegação. Em Governança e Administração, vá para Identidade e clique em Compartimentos. Nesta tela, você verá uma lista de compartimentos. Clique em Criar Compartimento.

  2. Informe o seguinte:

    • Nome: Informe "AppDev".
    • Descrição: Informe uma descrição (necessária), por exemplo: "AppDev compartimento para o tutorial introdutório". Evite digitar informações confidenciais.
    • Compartimento Pai: Selecione o compartimento no qual você deseja que este compartimento reside. O padrão é o compartimento (ou tenancy) raiz.
    • Clique em Criar Compartimento.
    • Seu compartimento é exibido na lista.

Criar Instância de Computação A1 Ampere

  1. Para criar uma instância de computação Ampere A1, use o menu de navegação no canto superior esquerdo da Console e vá para Computação > Instâncias.

  2. Abra o fluxo de criação da instância.

    1. Verifique se você está no Compartimento AppDev.
    2. Clique em Criar Instância.
  3. Na página de criação de instância, você criará a nova instância com os novos recursos de rede, como VCN (Virtual Cloud Network), Gateway de Internet (IG) e muito mais.

    1. Nomeie a instância como JavaApp
    2. Atualize a seleção da Imagem para usar o Oracle Linux 8 ou mais recente
    3. Clique no botão Alterar Forma para ver as formas de computação disponíveis.

     Criar InstânciaDescrição da ilustração Criar Instância

  4. Configure a imagem para sua instância.

    1. Clique no botão Alterar Imagem para ver as imagens do SO disponíveis.
    2. Escolha Oracle Linux 8 ou mais recente.

    Escolha o Oracle Linux 8Descrição da ilustração Escolher Oracle Linux 8

  5. Configure os recursos para sua instância.

    1. Escolha o processador baseado no Ampere Arm na opção da série de formas.
    2. Escolha a forma VM.Standard.A1.Flex na lista de formas com processadores baseados no Ampere Arm. As formas Ampere A1 são flexíveis e você pode modificar o número de núcleos e a quantidade de memória. Escolha 1 núcleo e 6 GB de memória para a VM.

    Escolher FormaDescrição da ilustração Escolher Forma

  6. Selecione as opções de rede. Crie uma nova VCN e sub-rede para sua próxima implantação na nuvem. Certifique-se de selecionar a designação de um endereço IP público para sua instância.

  7. Gere e faça download do par de chaves SSH. Essa etapa é opcional, mas altamente recomendada para manutenção e atualizações posteriores. Você também poderá trazer sua chave pública se já tiver um par de chaves que gostaria de usar. Se você quiser saber como gerar chaves SSH, siga as instruções no tutorial Gerar chaves SSH.

    Opções de redeDescrição da ilustração Opções de rede

  8. Clique em Criar para criar os recursos de rede e iniciar a instância de computação. iniciar instânciaDescrição da ilustração iniciar instância

Expor Portas do Aplicativo a Usuários

Para que os aplicativos fiquem acessíveis pela Internet, você precisa abrir as portas que nosso aplicativo usará. Nesta seção, você configurará listas de segurança em sua rede na nuvem e regras de firewall na sua instância de computação para permitir que seus aplicativos enviem e recebam tráfego.

Configurar a Rede Virtual na Nuvem (VCN)

Uma lista de segurança atua como um firewall virtual para uma instância, com regras de entrada e saída que especificam os tipos de tráfego de entrada e saída permitidos. Listas de segurança, conforme configuradas no nível da sub-rede, que aplica as regras de segurança a todos os elementos de rede dessa sub-rede. Sua rede vem com uma lista de segurança padrão, que tem um conjunto inicial de regras. A lista de segurança padrão permite que você estabeleça conexão com sua instância usando SSH e, para sua instância, faça chamadas de rede de saída para qualquer destino.

  1. Navegue na página de detalhes da instância criada. Compute > Instâncias > Clique na instância que você criou

  2. Navegue até a sub-rede à qual sua instância está anexada, clicando na sub-rede selecionar sub-rede Descrição da ilustração select sub-net

  3. Na página da sub-rede, clique na lista de segurança padrão para exibir detalhes e configurá-los.

  4. Clique em "Adicionar Regra de Entrada" para adicionar uma nova regra para permitir o tráfego de entrada que corresponda às regras.

  5. Adicione uma regra de entrada para permitir tráfego de entrada na porta 8080

    1. Defina o CIDR de Origem como 0.0.0.0/0. Isso permite o tráfego de entrada de todas as origens.
    2. Defina o Intervalo de Portas de Destino como 8080. Isso define o destino apenas como porta 8080. Agora a regra permite que o tráfego de todas as origens use a porta 8080. É isso que precisamos, para que nosso aplicativo possa ser acessado de qualquer lugar.
    3. Forneça uma descrição.

    configurar regras de entrada Descrição das regras de entrada de configuração da ilustração

Configurar o Firewall na Instância

As regras do firewall controlam o tráfego de entrada/saída de uma instância. Você configura regras de firewall diretamente na instância e fornece um nível adicional de segurança.

  1. Navegue até a página de detalhes da instância criada. Compute > Instâncias > Clique na instância que você criou.
  2. Copie o endereço IP público da sua instância.
  3. Faça log-in na instância usando SSH. Use a chave gerada por você ou fornecida durante a etapa de criação da instância. O nome de usuário padrão para instâncias que usam o sistema operacional Oracle Linux é opc.
  4. Execute os comandos de configuração do firewall. Isso modifica o firewall na própria instância para expor a porta 8080 e aceitar tráfego de entrada.

    sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
    

Execute aplicativos Java EE na Plataforma de Computação A1 Ampere

Para executar esse aplicativo, prepare primeiro uma instância de computação Ampere A1 com alguns pacotes necessários, como ferramentas de contêiner e git. Em seguida, clone o repositório e crie o aplicativo usando o Maven pom.xml incluído. Por fim, inicie os contêineres docker do MySQL e Tomcat usando as ferramentas de contêiner.

Instale as Ferramentas de Contêiner

O Oracle Linux 8 usa o Podman para executar e gerenciar contêineres. Podman é um mecanismo de contêiner sem daemon para desenvolver, gerenciar e executar contêineres Open Container Initiative e imagens de contêineres em seu sistema Linux. O podman fornece um aplicativo de linha de comando compatível com Docker que pode ser usado como substituto do docker. A instalação do pacote podman-docker fornece o comando docker que chama transparentemente podman.

  1. Faça log-in na instância usando SSH. Use a chave gerada por você ou fornecida durante a etapa de criação da instância. O nome de usuário padrão para instâncias que usam o sistema operacional Oracle Linux é opc.

  2. Instale o módulo container-tools que utiliza todas as ferramentas necessárias para trabalhar com contêineres.

    sudo dnf module install container-tools:ol8
    
    sudo dnf install podman-docker git
    

Clonar o Código-fonte

Para começar, use o SSH para fazer log-in na instância de computação e clonar o repositório.

git clone https://github.com/oracle-quickstart/oci-arch-tomcat-mds.git
cd oci-arch-tomcat-mds/java

Crie o Aplicativo Web

Os aplicativos Web Java são empacotados como arquivos de aplicativos Web ou arquivos WAR. Os arquivos WAR são arquivos zip com metadados que descrevem o aplicativo para um contêiner de servlet como Tomcat. Este exemplo usa o Apache Maven para criar o arquivo WAR para o aplicativo. Para construir o aplicativo, execute o comando a seguir. Certifique-se de executar o comando no local no qual os arquivos de origem foram clonados.

podman run -it --rm --name todo-build \
    -v "$(pwd)":/usr/src:z \
    -w /usr/src \
    maven:3 mvn clean install

Esse comando cria um diretório target e o arquivo WAR dentro dele. Observe que não estamos instalando o Maven, mas executando o conjunto de ferramentas de criação dentro do contêiner.

Execute o Aplicativo na Plataforma de Computação A1 Ampere

O aplicativo usa o contêiner de servlet Tomcat e o banco de dados MySQL. Tanto o Tomcat quanto o banco de dados MySQL suportam a arquitetura ARM64v8 que a plataforma de computação Ampere A1 usa.

  1. Crie um pod usando o Podman.

    podman pod create --name todo-app -p 8080:8080 --infra-image k8s.gcr.io/pause:3.1
    
  2. Inicie o contêiner de banco de dados no pod.

    podman run --pod todo-app -d \
    -e MYSQL_ROOT_PASSWORD=pass \
    -e MYSQL_DATABASE=demo \
    -e MYSQL_USER=todo-user \
    -e MYSQL_PASSWORD=todo-pass \
    --name todo-mysql \
    -v "${PWD}"/src/main/sql:/docker-entrypoint-initdb.d:z \
    mysql/mysql-server:8.0
    

    Para o banco de dados MySQL, os scripts de inicialização do banco de dados são fornecidos para o contêiner, que cria os usuários e tabelas de banco de dados necessários na inicialização. Isso é feito pela montagem do diretório /src/main/sql do host como /docker-entrypoint-initdb.d dentro do contêiner. A imagem oficial do MySQL que você está usando aqui está configurada para executar arquivos .sql neste diretório durante a inicialização. Para obter mais opções, incluindo como exportar e fazer backup de dados, consulte a documentação.

  3. Implante o aplicativo que você criou como um arquivo WAR com um servidor Tomcat.

    podman run --pod todo-app -d\
    --name todo-tomcat \
    -v "${PWD}"/target/todo.war:/usr/local/tomcat/webapps/todo.war:z \
    tomcat:9
    podman logs -f todo-tomcat
    

    As informações de conexão do banco de dados e o aplicativo são fornecidos para o contêiner do Apache Tomcat por meio do src/main/resources/todo.properties. O URL JDBC usa localhost como o host do servidor MySQL. Isso ocorre porque os contêineres dentro do mesmo pod podem se comunicar uns com os outros usando localhost. O arquivo WAR do aplicativo é fornecido como uma montagem no contêiner.

    O Tomcat implanta o aplicativo na inicialização e o mapeamento de portas para o host disponibiliza o aplicativo pelo endereço IP público da instância de computação.

  4. Informe o endereço IP público da instância de computação em um browser com a porta 8080. Você poderá ver o aplicativo. http://<ip_address>:8080/todo/

Solução de Problemas

Os contêineres Podman podem ser inspecionados da mesma forma que os contêineres Docker (você pode até mesmo alias podman como docker). Aqui estão alguns comandos comuns para inspecionar os contêineres:

Plataforma de computação Ampere A1

Agradecimentos

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.