Executando sua aplicação Java na Oracle Container Service Classic

Por Daniel Dias
Publicado em Março 2019

Revisado por Juan Pablo Guizado





Oracle Container Cloud

Neste artigo veremos como utilizar a plataforma de Cloud da Oracle para executar nossas imagens de docker com uma aplicação Java no serviço de Container.

O objetivo do artigo não é ensinar como fazer build de uma imagem com o dockerfile e subi a mesma para o docker hub ou até mesmo demonstrar a utilização docker. Mas sim mostrar como executar,fazer pull da imagem para Oracle Container Service Classic.

Aqui estaremos usando duas imagens, uma web-app com Wildfly-Swarm e uma api rest com SparkJava com CRUD sendo consumido no Angular 2/4.





Oracle Cloud Container


Os serviços Oracle Cloud ajudam os usuários a criar contêineres e oferece a capacidade de criar serviços de forma rápida e fácil, aumentando assim a produtividade de uma empresa.

Este serviço usa ambientes especiais de produção, teste e pré-produção. O objetivo principal do Oracle Container Cloud Service é gerenciar o Docker e melhorar o controle para que os sistemas funcionem corretamente.

Com a Oracle Container Cloud oferece às equipes de Desenvolvimento e Operações os benefícios de um contentor Docker fácil e segura ao criar e implantar aplicativos.

Com tudo esse serviço oferece os seguinte benefícios:

  • fornece uma interface fácil de usar para gerenciar o ambiente Docker.
  • fornece exemplos imediatos de serviços contatados e pilhas de aplicativos que podem ser implantados em um clique.
  • permite que os desenvolvedores se conectem facilmente aos seus registros Docker privados (para que eles possam “trazer seus próprios contêineres”).
  • permite que os desenvolvedores se concentrem em criar imagens de aplicativos em contêineres e pipelines de Integração Contínua / Entrega Contínua (CI / CD), não em aprender tecnologias de orquestração complexas.

Bem feita essa rápida introdução sobre o serviço, podemos da inicio ao processo de criação da uma instancia na Oracle Cloud.





Acessando a Oracle Cloud Container

Primeiramente faça o login em sua conta Oracle Cloud clicando em Sign In



E ao clicá-la sera levado a seguinte tela:



Aqui entre com o nome da sua conta Cloud e em seguida sera levado a tela de autenticação :



Entre com seu usuário e senha, feito o login sera levado a tela de DashBoard contendo informações sobre seus serviços, valores, notificações, etc.



A partir desta tela podemos criar novas instancias dos serviços disponíveis em nossa conta, com podem observar eu tenho alguns serviços listados no meu painel, os mesmo estão sendo exposto aqui, porque eu especifiquei quais serviços quero mostrar em meu painel quando entro na minha conta, podemos adicionar mais serviço clicando no card “Personalizar Painel de Controle | Customize Dashboard”.

Como entrar nessa tela pela primeira vez, temos somente o serviço de Identity Cloud apresentado, para criar uma nova instancia de algum serviço temos duas opções:

  1. Clicando no card “Criar Instancia | Create Instance” que ira da uma lista dos serviços disponíveis separados por categoria.

  2. Clicar no menu ao lado do nome “Oracle Cloud  -  Meus Serviços”, nisso ira lhe apresentar um menus com uma lista de opções e um outro menu chamado “serviços | Services” que lista os serviços que temos disponíveis para usar


Para esse post eu vou utilizar o serviço chamado “Container Classic “ para isso clique no Card criar instancia ou mesmo vai no menu e procurar por esse nome e você sera levado a tela do serviço , como pode ser visto na seguinte imagem:

Clique no botão "Create Instance" e você sera levado a uma tela com um pequeno formulário para preencher para poder ser criado uma instancia:



Preenche todos os dados e logo depois clique em Edit no campo “SSH Public Key” para termos acesso a instancia via terminal, nisso ira abrir um pop-pup oferecendo 3 opções para entrar com SSH:



Marque a opção “Create a New key”, nisso será gerado uma chave publica e privada é a mesma dará opção fazer Download de um arquivo zip contendo a mesma, feito isso a tela volta para o formulário com o campo preenchido com o valor da chave, logo em seguida clique em “Next” para ser levado a tela de confirmação das configurações, estando tudo certo clique em “Create” para ser levado novamente a tela de instancia aonde o seu serviço esta sendo criado:



Nesta tela mostra todas as instancia criadas atualmente, bem como um pequeno sumario dos recursos utilizado por esse instancia.

Agora clique no nome do seu serviço para ser levado a tela onde ira conter mais detalhes sobre o serviço ainda em criação:



Nesta tela é mostrada os recursos, status de criação da instancia, bem como acesso a url para acessar o console para podemos utilizar o serviço,etc. Ira levar um tempinho para que o serviço esta ok.

Depois de tudo pronto podemos acessar o serviço, para isso bastamos ir no menu como na imagem a seguir e clicar em “Container Console”:



Após clicar você sera levado a uma outra tela de login, aonde deve ser inserido o login e senha criado no momento da criação da instancia:



Feito isso você estará dentro do console do serviço, ou seja o painel de controle/dashboard conforme a imagem e nesse link contem as descrição de cada função desta tela:



Agora bastamos clicar em “Services” e seremos levados a seguinte tela:


Aqui é mostrado uma lista de serviços pré-configurados bastando usá-los e modificá-los da sua maneira.

Agora para a gente fazer um pull da nossa imagem que fica no docker hub, precisaremos criar um serviço, para isso basta clicar no botão “New Serviçe” e vai abrir um pop-pup com um pequeno formulário para criação do nosso serviço nesse link contem as descrição de cada função desta tela:



Bastando preencher o mesmo da seguinte forma para esse post fiz da seguinte maneira:







Indo na aba YAML você poderá ver como ficou a configuração:



Feito isso basta clicar em salvar, nisso você voltara para a tela de serviços, bastando procura pelo nome do serviço que no meu caso é “danieldiasjava” e clicar em “Deploy” para da inicial ao pull da imagem do docker:



Feito isso, clique no “Container Name” para ir para tela de detalhe e pegar o ip publico para acessar o app:



Nesta tela vá na aba “Environment Variable” para ser mostrado um log aonde ira conter o ip_publico conforme a imagem:



Pegando o ip que no meu caso é public_ip : 129.150.112.30 e utilizando o mesmo no navegador. Então para acessar os serviço da imagem danieldiasjava/sparkjava-crud temos os seguintes endereços:

  • GET: http://localhost:8080/api/consultar

  • POST: http://localhost:8080/api/cadastrar

  • GET: http://localhost:8080/api/consultar/{codigo}

  • PUT: http://localhost:8080/api/editar

  • DELETE: http://localhost:8080/api/deletar/{codigo}



Então utilizando o PostMan para testar nosso serviço com o Post da seguinte maneira:



E fazendo um Get com http://129.150.112.30:8080/api/consultar, trazendo o resultado:



Também podemos fazer uso de um frond-end para esta consumindo esse rest, para tal tenho esse simples app feito em angular 2/4 disponível no seguinte link, bastando alterar o arquivo config.service.ts com o endereço do serviço:



Para ver os logs , você pode clicar em “View Logs” no mesmo local quando vimos para pegar o ip_public:



Agora iremo fazer o mesmo para a imagem do Wildfly-Swarm seguindo o mesmo passos, bastando apenas mudar a porta para 8081:8080, passando o nome da imagem: danieldiasjava/ozark-demo , depois do deploy basta acessar o endereço que no meu caso é: http://129.150.112.30:8081/app/:



Depois disso bastamos paramos nosso serviço e remover os mesmo no menu “Deployments”, se necessário também pode remover suas imagem no menu “Services”:



Para sair do console do Container basta fazer logout e vamos agora remover nosso serviço de container voltando novamente na tela aonde criamos nossa instancia e acessar um pequeno menu e clicar em “Delete” e marcar uma check-box para forçar o delete:



Bem isso é tudo desse passo a passo na utilização de um dos serviços da Oracle Cloud.

O código-fonte para o projeto SparkJava-crud pode ser encontrado aqui.




REFERÊNCIAS





Daniel Dias é um Desenvolvedor Java EE que adora compartilhar, aprender novos assuntos e tecnologias referente a Java/Java EE com a comunidade. Board Member da SouJava, membro da JCP, contribuidor das especificações JSR 354 (Money and Currency API), JSR-371 ( MVC 1.0 ), JSR-382 ( Configuration API 1.0 ) , Expert Group JSR-385 ( Units of Measurement 2.0 ) e Eclipse Committer , além disso recebeu o prêmio JCP Outstanding Adopt-a-JSR e esta dando os primeiros passos nas contribuições de projetos Open Source.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.